回复 6 楼 wp231957
能不能帮我看看哪儿出问题了?
#include<stdio.h>
char op[5]={'#','+','-','*','/'};
float cal(float x,float y,int op)
{
switch(op)
{
case 1:return x+y;
case 2:return x-y;
case 3:return x*y;
case 4:return x/y;
}
}
int get4(int i,int j,int k,int t)
{
int op1,op2,op3;
int flag=0;
float cal_1(int i,int j,int k,int t,int op1,int op2,int op3); /*(A?B)?C?D*/
{
float r1,r2,r3;
r1=cal(i,j,op1);
r2=cal(r1,k,op2);
r3=cal(r2,t,op3);
return r3;
}
float cal_2(int i,int j,int k,int t,int op1,int op2,int op3); /*(A?(B?C))?D */
{
float r1,r2,r3;
r1=cal(j,k,op2);
r2=cal(i,r1,op1);
r3=cal(r2,t,op3);
return r3;
}
float cal_3(int i,int j,int k,int t,int op1,int op2,int op3); /* A?(B?(C?D)) */
{
float r1,r2,r3;
r1=cal(k,t,op3);
r2=cal(j,r1,op2);
r3=cal(i,r2,op1);
return r3;
}
float cal_4(int i,int j,int k,int t,int op1,int op2,int op3); /* A?((B?C)?D) */
{
float r1,r2,r3;
r1=cal(j,k,op2);
r2=cal(r1,t,op3);
r3=cal(i,r2,op1);
return r3;
}
float cal_5(int i,int j,int k,int t,int op1,int op2,int op3); /* (A?B)?(C?D) */
{
float r1,r2,r3;
r1=cal(i,j,op1);
r2=cal(k,t,op3);
r3=cal(r1,r2,op2);
return r3;
}
for(op1=0;op1<4;op1++)
for(op2=0;op2<4;op2++)
for(op3=0;op3<4;op3++)
if(cal_1(i,j,k,t,op1,op2,op3)==24.0)
{
printf("((%d%c%d)%c%d)%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第一种类型的算式*/
flag=1;
}
if(cal_2(i,j,k,t,op1,op2,op3)==24.0)
{
printf("(%d%c(%d%c%d))%c%d=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第二种类型的算式*/
flag=1;
}
if(cal_3(i,j,k,t,op1,op2,op3)==24.0)
{
printf("%d%c(%d%c(%d%c%d))=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第三种类型的算式*/
flag=1;
}
if(cal_4(i,j,k,t,op1,op2,op3)==24.0)
{
printf("%d%c((%d%c%d)%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第四种类型的算式*/
flag=1;
}
if(cal_5(i,j,k,t,op1,op2,op3)==24.0)
{
printf("(%d%c%d)%c(%d%c%d)=24\n",i,op[op1],j,op[op2],k,op[op3],t);/*输出符合第五种类型的算式*/
flag=1;
}
return flag;
}
void main()
{
int i,j,k,t;
printf("Please input four integer (1~10)\n");
loop:
scanf("%d %d %d %d",&i,&j,&k,&t);
if(i<1||i>10||j<1||j>10||k<1||k>10||t<1||t>10) /* 判断输入的数是否符合规定
*/
{
printf("mistake
pleasn input again\n ");
goto loop;
}
if(get4(i,j,k,t));
else
printf("Sorry, the four integer cannot be calculated to get 24\n");
getchar();
}