黑马程序员技术交流社区

标题: 死循环 [打印本页]

作者: guobin_lu    时间: 2013-3-31 23:25
标题: 死循环
A.inti=100;while (1) { i=i%100+1; if (i>100) break; }
B.for(;;);
C.intk=1000; do { ++k; }while(k>=10000);
D.ints=36; while (s);--s;


哪个选项没够构成死循环?

作者: DWC_5101    时间: 2013-3-31 23:29
本帖最后由 DWC_5101 于 2013-4-2 14:25 编辑

C选项 死循环。
D选项,代码有问题,s是int型,不能作为while的条件。

作者: 张振    时间: 2013-3-31 23:59
你这做题呢~~~
首先 A也是死循环  原因:i=1%100+1的结果永远都是1
不过我不知道while()括号里是1 是什么意思 我默认是true了
B也是死循环 不过人眼是看不出来的 因为没有显示内容
C 的内容 应该是k=10000吧 它是死循环
D 不是的
作者: 郑丹丹1990    时间: 2013-4-1 08:42
我是通过看运行前后CPU使用情况判断的。
A是死循环
B是死循环。原因不知道,我运行了一下,前后看CPU的使用,前2%,运行之后54%。
C不是
D代码有问题while(s)
作者: 杜磊    时间: 2013-4-1 09:54
D 不是死循环    因为当 s=0时就return  结束循环了
作者: 郑丹丹1990    时间: 2013-4-1 18:38
杜磊 发表于 2013-4-1 09:54
D 不是死循环    因为当 s=0时就return  结束循环了

while(s)S是int不是bool这样可以吗?我怎么觉得代码本身错了呢
作者: 郑丹丹1990    时间: 2013-4-1 18:39
这个问题解决没?我想知道结果,谢谢
作者: 许正龙    时间: 2013-4-1 20:41
布尔二进制表示就是0和1,1为true,0为false,D不是死循环。
作者: 杜磊    时间: 2013-4-1 22:34
首先我要很严肃的说二点,你的A和D选项连编译器这一关都过不了,何谈循环?更别谈死循环了……
你的是正确代码的选项只有B,C二项。
C选项不会死循环。
以上是正解,不要再被大家误导了。
作者: 严夫    时间: 2013-4-8 11:22
D不是死循环。当S小于0后就停止了
作者: 史鹏飞    时间: 2013-4-8 13:05
A.inti=100;while (1) { i=i%100+1; if (i>100) break; }
B.for(;;);
C.intk=1000; do { ++k; }while(k>=10000);
D.ints=36; while (s);--s;

C 不是死循环,A、D编译都通不过,B是死循环
作者: 刘云东    时间: 2013-4-8 22:24
很明显C是正确答案。
作者: 田瑞朋    时间: 2013-4-15 22:31
C不是死循环 其他都是
A选项while循环体i的值都是小于100的,死循环
B是死循环
D while(s)因为s不为0所以是死循环
作者: zerochen46    时间: 2013-4-16 21:29
C不会死循环,执行第一次后就会推出,应为c的值为1001,是小于10000
A和D中的条件非0即是真,所以会产生死循环
B也会产生死循环,在VS中调试中得到的答案,具体原因说不出来~~{:soso_e127:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2