2 u013315500 u013315500 于 2014.01.03 16:48 提问

一个C编写的求24点问题,求大神帮忙纠错

#include

int main()
{
int mode,i,j,k,sum,p,q,flag=1;
int a[4];
for(i=0; i<4; i++)
{
scanf("%d",&a[i]);
}
while(a[0]+a[1]+a[2]+a[3]!=0)
{
flag=1;
for(i=0; i<4 && flag; i++)
{
for(j=i+1; j<4 && flag; j++)
{
for(mode=0; mode<6 && flag; mode++)
{
sum=a[i];
switch(mode)
{
case 0: sum+=a[j];break;
case 1: sum-=a[j];break;
case 2: sum*=a[j];break;
case 3: if(a[j]) sum/=a[j];break;
case 4: sum=a[j]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
for(p=0; p<4; p++)
{
if(p!=i && p!=j)
break;
}
for(q=0; q<6 && flag; q++)
{
switch(q)
{
case 0: sum+=a[p];break;
case 1: sum-=a[p];break;
case 2: sum*=a[p];break;
case 3: if(a[p]) sum/=a[p];break;
case 4: sum=a[p]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
k=6-i-j-p;
if(sum+a[k]==24 || sum-a[k]==24 || sum*a[k]==24 )
{
flag=0;
}
else if(a[k]!=0)
{
if(sum/a[k]==24)
{
flag=0;
}
}
}

p=6-p-i-j;
for(q=0; q<6 && flag; q++)
{
switch(q)
{
case 0: sum+=a[p];break;
case 1: sum-=a[p];break;
case 2: sum*=a[p];break;
case 3: if(a[p]) sum/=a[p];break;
case 4: sum=a[p]-sum; break;
case 5: if(sum) sum=a[j]/sum; break;
}
k=6-i-j-p;
if(sum+a[k]==24 || sum-a[k]==24 || sum*a[k]==24 )
{
flag=0;
}
else if(a[k])
{
if(sum/a[k]==24)
{
flag=0;
}
}
}
}
}
}
if(flag)
printf("NO\n");
else
printf("YES\n");
for(i=0; i<4; i++)
scanf("%d",&a[i]);
}
return 0;
}

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!