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,所以跳出循环。
为什么呢?
分析如下:
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整除"的条件,所以它会永远循环下去。
******************************************************
你的这本书可以扔掉了!你可以看书根据大家的发言推理判断一下嘛!第一个绝对不是无限循环。本回答被提问者采纳
第一个程序中的k在某个时候会溢出,到溢出时,k值会变会负数,此时k>0便不成立,所以它不是无限循环
第二个程序中即使s上溢,也仍然会满足"s和s+1中有一个不能被2整除"的条件,所以它会永远循环下去。
******************************************************
你的这本书可以扔掉了!你可以看书根据大家的发言推理判断一下嘛!第一个绝对不是无限循环。本回答被提问者采纳
第2个回答 2008-03-26
第一个k一直++会溢出整形范围,k变为负数,所以不是无限循环
第二个while的条件是k是偶数或者奇数,因为不管溢出与否,k要么是偶数要么是奇数,所以是无限循环
第二个while的条件是k是偶数或者奇数,因为不管溢出与否,k要么是偶数要么是奇数,所以是无限循环
第3个回答 2008-03-26
第一个
因为k赋值为 32764
判断是k>0 执行为k++ k++所以k永远大于0 故是无限循环!
因为k赋值为 32764
判断是k>0 执行为k++ k++所以k永远大于0 故是无限循环!
第4个回答 2008-03-26
第二个,
因为第二个无论什么情况下都会有%2不为0的情况,所以会继续循环。
而第一个会因为越界而使得k变成负数,则》0不成立而退出。
因为第二个无论什么情况下都会有%2不为0的情况,所以会继续循环。
而第一个会因为越界而使得k变成负数,则》0不成立而退出。