猿问

为什么中间要a=b=c=d=10//比赛结果的预测编程题

/*在运动会游泳1500米自由泳的比赛前,有人让五位运动员据实力预测比赛的结果。
A选手说:B第二,我第三。
B选手说:我第二,E第四。
C选手说:我第一,D第二。
D选手说:C最后,我第三。
E选手说:我第四,A第一。
决赛成绩公布之后,每位选手的预测都只说对了一半,请编程输出比赛的实际名次*/
#include <stdio.h>
int main()
{
int a,b,c,d,e;
for (a=1;a<6;a++)
{
for (b=1;b<6;b++)
{
if(a==b)
continue;
for (c=1;c<6;c++)
{
if(a==c || b==c)
continue;
for (d=1;d<6;d++)
{
if(a==d || b==d || c==d)
continue;
for (e=1;e<6;e++)
{
if(a==e || b==e || c==e || d==e)
continue;
if((b==2||a==3) && (b==2||e==4) && (c==1||d==2) && (c==5||d==3) && (e==4||a==1))
{
printf("A:%d\nB:%d\nC:%d\nD:%d\nE:%d\n",a,b,c,d,e);
a=b=c=d=10;//why?
break;
}
}
}
}
}
}
return 0;
}

慕雪3212274
浏览 1588回答 3
3回答

习惯受伤

这个是多层循环嵌套,最内部的循环,如果判断出来了结果,break掉之后,将继续循环d循环,这里的设置是为了结束循环,结果已经出来了,就没必要再循环了。 当执行了a=b=c=d=e=10之后,break掉e循环之后回到d循环,因为d=10了,不满足继续循环的条件了,退出d循环,继续c循环……以此类推,这样做的原因就是可以在内部循环结束之后,直接跳出多层循环
随时随地看视频慕课网APP
我要回答