以文本方式查看主题 - 计算机科学论坛 (http://bbs.xml.org.cn/index.asp) -- 『 C/C++编程思想 』 (http://bbs.xml.org.cn/list.asp?boardid=61) ---- 荤菜求助:关于break的问题 (http://bbs.xml.org.cn/dispbbs.asp?boardid=61&rootid=&id=44716) |
-- 作者:荤菜 -- 发布时间:4/2/2007 12:34:00 AM -- 荤菜求助:关于break的问题 1--100个数,目的是当碰到10时,结束循环打印出1--10 程序1 main() {int s,i,c; for(s=1;s<=100;s++) {c=s%10; if(c==0) break; /*我认为算到这一步时,虽然break;跳出循环,但s=10*/ printf("%4d",s);} /*我认为由于break;这一行将不会打印出10*/ printf("%4d",s); /*完成最后一次循环后,s还要加1因此s=10+1=11才终止循环,所以这一行应打印出11*/ getch(); } 但我只想让它得出这样的错误结果1 2 3 4 5 6 7 8 9 11 却得出正确的结果1 2 3 4 5 6 7 8 9 10,(我只要错误的结果!)为什么会这样 |
-- 作者:fangel2000 -- 发布时间:4/2/2007 10:54:00 AM -- main() {int s,i,c; for(s=1;s<=100;s++) {c=s%10; if(c==0) break; /*我认为算到这一步时,虽然break;跳出循环,但s=10*/ printf("%4d",s);} /*我认为由于break;这一行将不会打印出10*/ printf("%4d",s); /*完成最后一次循环后,s还要加1因此s=10+1=11才终止循环,所以这一行应打印出11*/ getch(); } s=10跳出循环,不再加1 |
-- 作者:一分之千 -- 发布时间:4/3/2007 5:19:00 PM -- 楼上说的对,这个地方你得注意一个问题,第一个程序之所以跳出,是因为除法余数为0.而不是因为s为11>10才跳出循环的. s的递增是在循环进行倒最后的时候进行的.而不是在break的时候~ |
-- 作者:荤菜 -- 发布时间:4/7/2007 5:17:00 PM -- 谢谢,我有点明白了.我认为程序一之所以跳出,是因为除法余数为0,然后一个break语句结束了它的生命,循环跳出.而第二个程序(if(m%i==0)break;)这一行,是因为当m除以i不为0的时候(也就是break没有起作用的时候),i的寿命已尽,才一命呜呼跳出循环的. |
-- 作者:Christopher-sky -- 发布时间:4/8/2007 3:38:00 AM -- 认识到了问题的原因了哈 谢谢哈... |
W 3 C h i n a ( since 2003 ) 旗 下 站 点 苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》 |
46.875ms |