以下哪个是无限循环...

1. k=32764;
do
{
k++;k++;
}while(k>0);

2.s=32764;
while((s++%2)||(s%2)) s++;

请问这两个.哪一个是无限循环...哪一个是有限循环..为什么...
呵呵.大家的答案怎么都不一样啊....
书上的答案是第二个..
这是一道选择题的后两个选项...也就是说..第一个不是无限循环.第二个是无限循环...各位大哥.请指教....

第一个是无限循环,第二个是有限循环。
为什么呢?
分析如下:
do{}while()是以while括号里面的语句作为判断是否继续执行{}里面的语句。

第一个括号里面的k>0,因为赋值为32764,并且执行k++,这样k>32764>0,是无限循环。

第二个括号里的左边s++%2是先%2值为0,右边s%2为32764%2结果为16382,余数为0,所以值也为0,左边的0与右边的0作或运算,结果为0,所以跳出循环。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-03-26
第二个是无限循环

第一个程序中的k在某个时候会溢出,到溢出时,k值会变会负数,此时k>0便不成立,所以它不是无限循环

第二个程序中即使s上溢,也仍然会满足"s和s+1中有一个不能被2整除"的条件,所以它会永远循环下去。

******************************************************

你的这本书可以扔掉了!你可以看书根据大家的发言推理判断一下嘛!第一个绝对不是无限循环。本回答被提问者采纳
第2个回答  2008-03-26
第一个k一直++会溢出整形范围,k变为负数,所以不是无限循环
第二个while的条件是k是偶数或者奇数,因为不管溢出与否,k要么是偶数要么是奇数,所以是无限循环
第3个回答  2008-03-26
第一个
因为k赋值为 32764
判断是k>0 执行为k++ k++所以k永远大于0 故是无限循环!
第4个回答  2008-03-26
第二个,
因为第二个无论什么情况下都会有%2不为0的情况,所以会继续循环。
而第一个会因为越界而使得k变成负数,则》0不成立而退出。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网