下面程序段不是死循环的是?

A)intI=100;while(1){I=I%100+1;if(I>100)break;}B)for(;;);C)intk=0;do{++k;}while(k>=0);... A)int I=100;
while(1)
{ I=I%100+1;
if(I>100) break;
}
B)for ( ; ; );
C)int k=0;
do{++k;} while(k>=0);
D)int s=36;
while(s); --s;

答案是C,为什么我觉得应该是A?觉得C的答案是无限循环下去的。。
A中不是有IF语句和break吗?应该可以判断跳出循环的条件,并没有缺少能使程序终止的判断条件呀。。
A搞明白了,可是C。。可能是答案有问题了?
C 的答案,即使溢出也是会从负数开始输出,会无限输出,这个和死循环有什么区别?
展开
 我来答
cjlswb
推荐于2017-12-16 · TA获得超过590个赞
知道小有建树答主
回答量:338
采纳率:0%
帮助的人:168万
展开全部
do{
++k;
} while(k>=0);
其实看似k会一直大于0,但你作为一名学计算机的朋友,一定要记住,任何一个数据类型是有位数限制,好似int在C语言里就固定为32位带符号的整数类型,范围是-2147483648~2147483647,当不断增加一时,超过了就会溢出,返回到负的尽头,你用个printf的语句运行一下,结果是有输出的,不过需要一点时间
仙天木C
2008-05-03 · TA获得超过118个赞
知道答主
回答量:199
采纳率:0%
帮助的人:0
展开全部
第一个确实是死循环,因为I永远不可能大于100。为什么呢? 我们假设I已经到了99,那么I%100+1后是100,然后100%100+1之后又变成2了。然后就是重复这样的循环,永远不可能到I>100的时候。
第三个因为在++k后k始终大于0,所以也是死循环。

死循环就是无限循环,第三个数据的无限输出也是死循环的一种。凡是无限进行下去的表达式都可以认为是死循环
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蔡永藏
2008-05-03
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
当第一个负数出现的时候,条件不成立,跳出
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式