满意答案
我怕怕得很
推荐于 2016.12.01
采纳率: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分享举报