某侦察队接到一项紧急任务,要求在A、B、C、D、E、F 六个队员中 尽可能多地挑若干人,但有以下限制条件:

某侦察队接到一项紧急任务,要求在A、B、C、D、E、F 六个队员中 尽可能多地挑若干人,但有以下限制条件:
A和B二人中至少去一人 2.A和D不能一起去 3.A、E和F三人中要派二人去 4.B和C都去或都不去 5.C和D两人中去一个 6.若D不去,则E也不去 编程,输出选中的人选. 程序:main() { int a,b,c,d,e,f; for(a=0;a<=1;a++) for(b=0;b<=1;b++) for(c=0;c<=1;c++) for(d=0;d<=1;d++) for(e=0;e<=1;e++) for(f=0;f<=1;f++) { if(d==0)e=0; if(a+b>=1 & a+d!=2 && a+e+f==2 && b==c && c+d==1) printf("A:%d B:%d C:%d D:%d E:%d F:%dn",a,b,c,d,e,f); if(d==0)e=1; } }
我想问一下为什么要在最后的循环加一句 if(d==0)e=1;?
vivian_hd 1年前 已收到1个回答 举报

冰的百合花 幼苗

共回答了19个问题采纳率:94.7% 举报

因为循环体为:

if(d==0)e=0;
x09if(a+b>=1 a+d!=2 a+e+f==2 b==c c+d==1)
x09x09printf("A:%d B:%d C:%d D:%d E:%d F:%dn",a,b,c,d,e,f);
if(d==0)e=1;
如果不用if(d==0)e=1;,当d=0时,会卡死在for(e=0;e<=1;e++)上,跳不出来!
x09x09x09x09x09x09x09if(d==0)e=0;
if(d==0)e=1;两句可以使得d=0时,只计算e=0时的情况,应为之后e=1再e++,e>1从而跳过了e=1这个d=0时与e等于0的情况.

来自:唐明Cpp的求助!

1年前

7
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.274 s. - webmaster@yulucn.com