黑马程序员技术交流社区
标题: 死循环 [打印本页]
作者: 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 |