给你个参考程序:
这个程序实现的是输入4 个数,如果这个四个数可以用
四则运算、及括号得到24,那么输出这种运算。
如
输入
5 5 1 5
输出
5*(5-(1/5))
#include<
stdio.h>
int flag;
double count(double a,double b,int op)
{
if(op==0)return a+b;
if(op==1)return a-b;
if(op==2)return a*b;
if(b==0){
flag=1;return 0;
}
return a/b;
}
int main()
{
int s,i,j,k;
double a,b,c,d,x,y,z;
char op[5]={"+-*/"};
while(~scanf("%lf%lf%lf%lf",&a,&b,&c,&d)){
s=1;
for(i=0;s&&i<4;i++){
for(j=0;s&&j<4;j++)
for(k=0;s&&k<4;k++){
while(s){
flag=0;
x=count(a,b,i);
if(flag)break;
y=count(x,c,j);
if(flag)break;
z=count(y,d,k);
if(flag)break;
if(z==24.0){
printf("((%.0f%c%.0f)%c%.0f)%c%.0f\n",a,op[i],b,op[j],c,op[k],d);
s=0;
}
break;
}
while(s){
flag=0;
x=count(a,b,i);
y=count(c,d,k);
if(flag)break;
z=count(x,y,j);
if(flag)break;
if(z==24.0){
printf("(%.0f%c%.0f)%c(%.0f%c%.0f)\n",a,op[i],b,op[j],c,op[k],d);
s=0;
}
break;
}
while(s){
flag=0;
x=count(b,c,j);
if(flag)break;
y=count(a,x,i);
if(flag)break;
z=count(y,d,k);
if(flag)break;
if(z==24.0){
printf("(%.0f%c(%.0f%c%.0f))%c%.0f\n",a,op[i],b,op[j],c,op[k],d);
s=0;
}
break;
}
while(s){
flag=0;
x=count(b,c,j);
if(flag)break;
y=count(x,d,k);
if(flag)break;
z=count(a,y,i);
if(flag)break;
if(z==24.0){
printf("%.0f%c((%.0f%c%.0f)%c%.0f)\n",a,op[i],b,op[j],c,op[k],d);
s=0;
}
break;
}
while(s){
flag=0;
x=count(c,d,k);
if(flag)break;
y=count(b,x,j);
if(flag)break;
z=count(a,y,i);
if(flag)break;
if(z==24.0){
printf("%.0f%c(%.0f%c(%.0f%c%.0f))\n",a,op[i],b,op[j],c,op[k],d);
s=0;
}
break;
}
}
}
}
}