c语言编24的计算解
#include<stdio.h>void main()
{
int i,j,k,m,n,a[4],end[64];
char c,d,e;
printf("请输入扑克牌数值:");
for(i=0;i<4;i++)scanf("%d",&a[i]);
for(i=0;i<4;i++)
for(j=0;j<4;j++)
for(k=0;k<4;k++)
for(m=0;m<4;m++){
if(i==j||i==k||i==m||j==k||j==m||k==m)continue;
end[0]=a[i]*a[j]*a[k]*a[m];
end[1]=a[i]*a[j]*a[k]+a[m];
end[2]=a[i]*a[j]*a[k]-a[m];
end[3]=a[i]*a[j]*a[k]/a[m];
end[4]=a[i]*a[j]+a[k]*a[m];
end[5]=a[i]*a[j]+a[k]+a[m];
end[6]=a[i]*a[j]+a[k]-a[m];
end[7]=a[i]*a[j]+a[k]/a[m];
end[8]=a[i]*a[j]-a[k]*a[m];
end[9]=a[i]*a[j]-a[k]+a[m];
end[10]=a[i]*a[j]-a[k]-a[m];
end[11]=a[i]*a[j]-a[k]/a[m];
end[12]=a[i]*a[j]/a[k]*a[m];
end[13]=a[i]*a[j]/a[k]+a[m];
end[14]=a[i]*a[j]/a[k]-a[m];
end[15]=a[i]*a[j]/a[k]/a[m];
end[16]=a[i]+a[j]*a[k]*a[m];
end[17]=a[i]+a[j]*a[k]+a[m];
end[18]=a[i]+a[j]*a[k]-a[m];
end[19]=a[i]+a[j]*a[k]/a[m];
end[20]=a[i]+a[j]+a[k]*a[m];
end[21]=a[i]+a[j]+a[k]+a[m];
end[22]=a[i]+a[j]+a[k]-a[m];
end[23]=a[i]+a[j]+a[k]/a[m];
end[24]=a[i]+a[j]-a[k]*a[m];
end[25]=a[i]+a[j]-a[k]+a[m];
end[26]=a[i]+a[j]-a[k]-a[m];
end[27]=a[i]+a[j]-a[k]/a[m];
end[28]=a[i]+a[j]/a[k]*a[m];
end[29]=a[i]+a[j]/a[k]+a[m];
end[30]=a[i]+a[j]/a[k]-a[m];
end[31]=a[i]+a[j]/a[k]/a[m];
end[32]=a[i]-a[j]*a[k]*a[m];
end[33]=a[i]-a[j]*a[k]+a[m];
end[34]=a[i]-a[j]*a[k]-a[m];
end[35]=a[i]-a[j]*a[k]/a[m];
end[36]=a[i]-a[j]+a[k]*a[m];
end[37]=a[i]-a[j]+a[k]+a[m];
end[38]=a[i]-a[j]+a[k]-a[m];
end[39]=a[i]-a[j]+a[k]/a[m];
end[40]=a[i]-a[j]-a[k]*a[m];
end[41]=a[i]-a[j]-a[k]+a[m];
end[42]=a[i]-a[j]-a[k]-a[m];
end[43]=a[i]-a[j]-a[k]/a[m];
end[44]=a[i]-a[j]/a[k]*a[m];
end[45]=a[i]-a[j]/a[k]+a[m];
end[46]=a[i]-a[j]/a[k]-a[m];
end[47]=a[i]-a[j]/a[k]/a[m];
end[48]=a[i]/a[j]*a[k]*a[m];
end[49]=a[i]/a[j]*a[k]+a[m];
end[50]=a[i]/a[j]*a[k]-a[m];
end[51]=a[i]/a[j]*a[k]/a[m];
end[52]=a[i]/a[j]+a[k]*a[m];
end[53]=a[i]/a[j]+a[k]+a[m];
end[54]=a[i]/a[j]+a[k]-a[m];
end[55]=a[i]/a[j]+a[k]/a[m];
end[56]=a[i]/a[j]-a[k]*a[m];
end[57]=a[i]/a[j]-a[k]+a[m];
end[58]=a[i]/a[j]-a[k]-a[m];
end[59]=a[i]/a[j]-a[k]/a[m];
end[60]=a[i]/a[j]/a[k]*a[m];
end[61]=a[i]/a[j]/a[k]+a[m];
end[62]=a[i]/a[j]/a[k]-a[m];
end[63]=a[i]/a[j]/a[k]/a[m];
for(n=0;n<64;n++){
if(n<16)c='*';
else if(n<32)c='+';
else if(n<48)c='-';
else c='/';
if(n%4==0)e='*';
else if(n%4==1)e='+';
else if(n%4==2)e='-';
else e='/';
if(n<4||(n>15&&n<20)||(n>31&&n<36)||(n>47&&n<52))d='*';
else if(n<8||(n>19&&n<24)||(n>35&&n<40)||(n>51&&n<56))d='+';
else if(n<12||(n>23&&n<28)||(n>39&&n<44)||(n>55&&n<60))d='-';
else d='/';
if((end[n]==24)&&!(d==e&&d==c&&d=='+'))
printf("%d%c%d%c%d%c%d=24\n",a[i],c,a[j],d,a[k],e,a[m]);
}
}
if(a[0]+a[1]+a[2]+a[3]==24)printf("%d+%d+%d+%d=24\n",a[0],a[1],a[2],a[3]);
}
有两个问题求教
1:如何实现+-*/的循环表示,能简单一些?
2:用int的/号不出现小数使结果不真确如何解决?