C程序设计 24点小游戏_c语言实现24点游戏

其他范文 时间:2020-02-28 18:20:55 收藏本文下载本文
【www.daodoc.com - 其他范文】

C程序设计 24点小游戏由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“c语言实现24点游戏”。

1设计内容

有2、3、4、5、6、7、8、9、10、J、Q、K、A共13张牌,编一程序,判断对任意给定的4张牌,能否在进行加、减、乘、除运算后,其运算结果等于24。其中J按11计算,Q按12计算,K按13计算,A按1计算。如果能得到结果24,则输出可得到该结果的计算表达式。

若输入数据符合要求,且经过加、减、乘、除运算后,运行结果能得到24,如输入5,5,5,1,则显示可得到该结果的计算表达式,如5*(5-(1/5))。

若输入数据小于1或者大于13或者不是整数时,提示输入错误。若输入不能运算出24的数据,如1,1,1,1,则显示经过加、减、乘、除运算后,运行结果不能得到24。

2程序设计

2.1存储结构设计

由于要储存的数据不多,主要是储存所输入的4个整数,所以采用一维数组(a[4])储存。而计算过程会出现小数,所以数据类型采用浮点型(float)。

2.2主要程序设计

程序采用穷举法,对输入的4个数进行排列,有 4!=24种。用for来循环,if来判断,算法如下。for(i=0;i

用if来判断括号的类型,然后作出不同顺序的运算。括号有两对,主要有两种类型:一种是()()型,如(a+b)*(c+d);另一种是(())型,继续细分又有

种类型,如下a*(b*(c+d)),(a*(b+c))*d,a*((b+c)*d),((a+b)*c)*d。算法如下 if((!(i==3 && b==0))&&(!(j==3 && c==0))&&(!(k==3 && d==0))){ sum1=arithmetic(i,a,b);sum2=arithmetic(j,sum1,c);sum3=arithmetic(k,sum2,d);} if(k==2){ sum1=arithmetic(i,a,b);sum2=arithmetic(j,c,d);sum3=sum1*sum2;} if(k==3){ sum1=arithmetic(i,a,b);sum2=arithmetic(j,c,d);if(sum2!=0){ sum3=sum1/sum2;} } 在输入方面,按要求,数据类型是 1 至13 的整数,符合则进行运算,不符合则重新输入。用if语句来实现,如下 if(a[i]13 || a[i]!=int(a[i]))

在输出方面,运算结果等于 24就输出,利用调用的参数判断输出形式,有5种:(a+b)*(c+d),a*(b*(c+d)),(a*(b+c))*d,a*((b+c)*d),((a+b)*c)*d。算法如下:

void show(int type,int i,int j,int k,float a,float b,float c,float d){ if(type==1){

if(j==4 || j==5){

if(k==4 || k==5)

cout

else

cout

else if(k==4 || k==5)

cout

}

else

cout

} if(type==2 || type==3){ cout

程序流程框图如图2-3所示:

图2-3 3程序调试

3.1测试用例

开始运行时的页面如图4-1所示:

图4-1 首先,测试程序能不能运算出正确的结果,输入数据6,6,6,6,出现了44组符合要求的解,如图4-2所示。

接着输入数据2,9,7,14,提示输入错误,重新输入2,7,5,13,能得到正确运行结果,如图4-2所示。

输入4,9,11,13,不能运算得到24,显示“你所输入的数,经过四则运算后,不等于24点”,如图4-3所示。

输入5,5,5,1,这组数据要运算得到24,一定会出现小数,因为只有一种运算,即5*(5* /" 4个运算符号选3个,有4*4*4=64种

for(j=0;j

// 3种运算符排列

有 3!=6 种

for(k=0;k

{

if((!(i==3 && b==0))&&(!(j==3 && c==0))&&(!(k==3 && d==0)))// 括号的类型为(()){ // 3为做除法运算的标志,除数为 0 时,跳过

= =

sum1=arithmetic(i,a,b);

//a,b做 以 i 为标志的运算,然后把值赋给sum1

sum2=arithmetic(j,sum1,c);//sum1,c做 以 j 为标志的运算,然后把值赋 给sum2

sum3=arithmetic(k,sum2,d);//sum2,d做 以 k 为标志的运算,然后把值赋给sum3

if(fabs(sum3-24)

{

check++;

//标志能运算出24

show(1,i,j,k,a,b,c,d);// 输出运算出 24 的表达式

}

}

if(k==2)//()*()

{

sum1=arithmetic(i,a,b);//a,b做 以 i 为标志的运算,然后把值赋给sum1

sum2=arithmetic(j,c,d);//sum1,c做 以 j 为标志的运算,然后把值赋给sum2

sum3=sum1*sum2;

if(fabs(sum3-24)

{

check++;

//标志能运算出24

show(2,i,j,k,a,b,c,d);// 输出运算出 24 的表达式

}

}

if(k==3)// 括号的类型为()()

{

sum1=arithmetic(i,a,b);//sum1,c做 以 j 为标志的运算,然后把值赋给sum2

sum2=arithmetic(j,c,d);//sum1,c做 以 j 为标志的运算,然后把值赋给sum2

if(sum2!=0)

{

sum3=sum1/sum2;

if(fabs(sum3-24)

{

check++;

//标志能运算出24

show(3,i,j,k,a,b,c,d);

// 输出运算出 24 的表达式

}

}

}

} }

void main(){ int i,j,k,l,m=0;

float a[4];

//储存所输入的 4个 整数

while(m==0){ m=1;

cout

for(i=0;i

cin>>a[i];

if(a[i]13 || a[i]!=int(a[i]))//判断是否为符合要求的整数

{ if(m!=0){

}

cout

m=0;} } for(i=0;i

//4的排列 4!=24,每中情况调用calculate

for(j=0;j

if(j!=i)

//第2数和第1个数不能重复

for(k=0;k

if(k!=j && k!=i)//第3数和第1,2个数不能重复

for(l=0;l

if(l!=i && l!=j && l!=k)//第4数和第1,2,3个数不能重复

{ calculate(a[i],a[j],a[k],a[l]);//调用calculate函数,进行进行加、减、乘、除运算

}

} if(check==0)//不能运算出24 { cout

下载C程序设计 24点小游戏word格式文档
下载C程序设计 24点小游戏.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

    热门文章
      整站推荐
        点击下载本文