c语言编程计算24,计算24点 要求:用C语言编写,输入4个数,通过加减乘除计算出24点,显示计算过程,并提示成功信息....

满意答案

02ae427d08e371d7e90d5b995e828d6d.png

我怕怕得很

推荐于 2016.12.01

02ae427d08e371d7e90d5b995e828d6d.png

采纳率:41%    等级:11

已帮助:5811人

/* Note:Your choice is C IDE */

#include "stdio.h"

#include "stdlib.h"

#include "ctype.h"

#include "string.h"

#include "math.h"

typedef float dd[5];

dd a; //输入的4个数

dd b; //4个数计算后剩余的3个数

dd c; //3个数计算后剩余的2个数

int num=0;

char temp1[200]; //用于存储4个数中任意2个数参与运算的表达式

char temp2[200]; //用于存储3个数中任意2个数参与运算的表达式

void js4(); //4个数参与运算

void js3(); //3个数参与运算

void js2(); //2个数参与运算

void main()

{

int i;

printf("输入4个小于10的正整数:");

for(i=1;i<=4;i++)

{

scanf("%f",&a[i]);

if(a[i]<1 || a[i]>10)

{

printf("输入数字有误!");

return;

}

}

js4();

if(num==0)

{

printf("\n对不起,没有可行的算法!");

}

}

void js4()

{

int i,j,k,m;

for(i=1;i<=4;i++) //取遍4个数a[1],a[2],a[3],a[4]

{

for(j=i+1;j<=4;j++) //与其后每个数进行组合

{

m=2; //找到没参与运算的数

for(k=1;k<=4;k++)

{

if(k!=i && k!=j)

{

b[m]=a[k];

m=m+1;

}

}

//进行四则运算,并记录表达式(备用)

//加

b[1]=a[i]+a[j];

sprintf(temp1,"%0.2f+%0.2f=%0.2f",a[i],a[j],b[1]);

js3();

//减

if(a[i]>a[j])

{

b[1]=a[i]-a[j];

sprintf(temp1,"%0.2f-%0.2f=%0.2f",a[i],a[j],b[1]);

}

else

{

b[1]=a[j]-a[i];

sprintf(temp1,"%0.2f-%0.2f=%0.2f",a[j],a[i],b[1]);

}

js3();

//乘

b[1]=a[i]*a[j];

sprintf(temp1,"%0.2f*%0.2f=%0.2f",a[i],a[j],b[1]);

js3();

//除

if(a[i]>a[j] && a[j]!=0)

{

b[1]=a[i]/a[j];

sprintf(temp1,"%0.2f/%0.2f=%0.2f",a[i],a[j],b[1]);

}

else if(a[i]!=0 && a[j]!=0)

{

b[1]=a[j]/a[i];

sprintf(temp1,"%0.2f/%0.2f=%0.2f",a[j],a[i],b[1]);

}

js3();

}

}

}

void js3()

{

int i,j,k,m;

for(i=1;i<=3;i++) //取遍3个数a[1],a[2],a[3],a[4]

{

for(j=i+1;j<=3;j++) //与其后每个数进行组合

{

m=2; //找到没参与运算的数

for(k=1;k<=3;k++)

{

if(k!=i && k!=j)

{

c[m]=b[k];

m=m+1;

}

}

//进行四则运算,并记录表达式(备用)

//加

c[1]=b[i]+b[j];

sprintf(temp2,"%0.2f+%0.2f=%0.2f",b[i],b[j],c[1]);

js2();

//减

if(b[i]>b[j])

{

c[1]=b[i]-b[j];

sprintf(temp2," %0.2f-%0.2f=%0.2f",b[i],b[j],c[1]);

}

else

{

c[1]=b[j]-b[i];

sprintf(temp2," %0.2f-%0.2f=%0.2f",b[j],b[i],c[1]);

}

js2();

//乘

c[1]=b[i]*b[j];

sprintf(temp2," %0.2f*%0.2f=%0.2f",b[i],b[j],c[1]);

js2();

//除

if(b[i]>b[j] && b[j]!=0)

{

c[1]=b[i]/b[j];

sprintf(temp2," %0.2f/%0.2f=%0.2f",b[i],b[j],c[1]);

}

else if(b[i]!=0 && b[j]!=0)

{

c[1]=b[j]/b[i];

sprintf(temp2," %0.2f/%0.2f=%0.2f",b[j],b[i],c[1]);

}

js2();

}

}

}

void js2()

{

//对最后2个数的四则运算最终结果进行判断,将满足条件的情况输出

//加

if(c[1]+c[2]==24)

{

printf("%s\t%s\t%f+%0.2f=24\n",temp1,temp2,c[1],c[2]);

num=num+1;

}

//减

if(c[1]-c[2]==24)

{

printf("%s\t%s\t%f-%0.2f=24\n",temp1,temp2,c[1],c[2]);

num=num+1;

}

else if(c[2]-c[1]==24)

{

printf("%s\t%s\t%f-%0.2f=24\n",temp1,temp2,c[2],c[1]);

num=num+1;

}

//乘

if(c[1]*c[2]==24)

{

printf("%s\t%s\t%f*%0.2f=24\n",temp1,temp2,c[1],c[2]);

num=num+1;

}

//除

if(c[1]>c[2] && c[2]!=0)

{

if(c[1]/c[2]==24)

{

printf("%s\t%s\t%f/%0.2f=24\n",temp1,temp2,c[1],c[2]);

num=num+1;

}

}

else if(c[2]>c[1] && c[1]!=0)

{

if(c[2]/c[1]==24)

{

printf("%s\t%s\t%f/%0.2f=24\n",temp1,temp2,c[2],c[1]);

num=num+1;

}

}

}

10分享举报


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部