/*在运动会游泳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;}
3 回答
习惯受伤
TA贡献885条经验 获得超1144个赞
这个是多层循环嵌套,最内部的循环,如果判断出来了结果,break掉之后,将继续循环d循环,这里的设置是为了结束循环,结果已经出来了,就没必要再循环了。
当执行了a=b=c=d=e=10之后,break掉e循环之后回到d循环,因为d=10了,不满足继续循环的条件了,退出d循环,继续c循环……以此类推,这样做的原因就是可以在内部循环结束之后,直接跳出多层循环
- 3 回答
- 1 关注
- 1587 浏览
添加回答
举报
0/150
提交
取消