A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© guobin_lu 中级黑马   /  2013-3-31 23:25  /  2442 人查看  /  13 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

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;


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

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

13 个回复

正序浏览
C不会死循环,执行第一次后就会推出,应为c的值为1001,是小于10000
A和D中的条件非0即是真,所以会产生死循环
B也会产生死循环,在VS中调试中得到的答案,具体原因说不出来~~{:soso_e127:}
回复 使用道具 举报
C不是死循环 其他都是
A选项while循环体i的值都是小于100的,死循环
B是死循环
D while(s)因为s不为0所以是死循环
回复 使用道具 举报
很明显C是正确答案。
回复 使用道具 举报
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是死循环
回复 使用道具 举报
D不是死循环。当S小于0后就停止了
回复 使用道具 举报
首先我要很严肃的说二点,你的A和D选项连编译器这一关都过不了,何谈循环?更别谈死循环了……
你的是正确代码的选项只有B,C二项。
C选项不会死循环。
以上是正解,不要再被大家误导了。
回复 使用道具 举报
布尔二进制表示就是0和1,1为true,0为false,D不是死循环。
回复 使用道具 举报
这个问题解决没?我想知道结果,谢谢
回复 使用道具 举报
杜磊 发表于 2013-4-1 09:54
D 不是死循环    因为当 s=0时就return  结束循环了

while(s)S是int不是bool这样可以吗?我怎么觉得代码本身错了呢
回复 使用道具 举报
D 不是死循环    因为当 s=0时就return  结束循环了

评分

参与人数 1技术分 +1 收起 理由
杞文明 + 1

查看全部评分

回复 使用道具 举报
我是通过看运行前后CPU使用情况判断的。
A是死循环
B是死循环。原因不知道,我运行了一下,前后看CPU的使用,前2%,运行之后54%。
C不是
D代码有问题while(s)
回复 使用道具 举报
你这做题呢~~~
首先 A也是死循环  原因:i=1%100+1的结果永远都是1
不过我不知道while()括号里是1 是什么意思 我默认是true了
B也是死循环 不过人眼是看不出来的 因为没有显示内容
C 的内容 应该是k=10000吧 它是死循环
D 不是的
回复 使用道具 举报
本帖最后由 DWC_5101 于 2013-4-2 14:25 编辑

C选项 死循环。
D选项,代码有问题,s是int型,不能作为while的条件。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马