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分享举报

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值