当前位置: 代码迷 >> C语言 >> [求助]有关循环结构的输出结果
  详细解决方案

[求助]有关循环结构的输出结果

热度:312   发布时间:2006-09-24 10:21:31.0
没关系,大家都在讨论嘛,只要不是复制,发的时间先后没有关系的.
----------------解决方案--------------------------------------------------------
前面手误搂打了一个等号,是while(n++=<2),不过解题思路都一样的,我大致听明白了,原来while后面是个分号,真的没注意这个细节,当n=2时,n++=2,然后n变为3++>2,所以跳出循环,然后输出n=4,我没理解错吧~~
----------------解决方案--------------------------------------------------------
没错.依葫芦画瓢就可以了.
----------------解决方案--------------------------------------------------------

那我再问一道题目
以下程序输出结果是:
#include<stdio.h>
main()
{int i,b,k=0;
for(i=1,i<=5;i++)
{b=i%2;
while(b-->=0) k++;
}
printf("%d,%d",k,b);
}
答案是8,-2,为什么?
我是这么理解的:while(b-->=0)就是说b的值要>0,b=i%2才会被执行,而我觉得既然1<=i<5,那么b的值就永远不可能为负,这应该变成死循环了,不知道我错哪里?

[此贴子已经被作者于2006-9-24 13:56:59编辑过]


----------------解决方案--------------------------------------------------------
没人能帮我吗?
----------------解决方案--------------------------------------------------------

我同意上面的 第三楼的


----------------解决方案--------------------------------------------------------
[QUOTE]下面程序的输出结果是
int n=0;
while(n++=<2); printf("%d",n);
答案是4,为什么?既然是循环结构,那么输出的n的值应该不止一个才对,执行几次循环就应该输出几次n的值.可为什么答案是4?[/QUOTE]
红色的“;”就是问题的关键 WHILE是空循环
----------------解决方案--------------------------------------------------------
以下是引用sunyuantz在2006-9-24 14:58:18的发言:
下面程序的输出结果是
int n=0;
while(n++=<2); printf("%d",n);
答案是4,为什么?既然是循环结构,那么输出的n的值应该不止一个才对,执行几次循环就应该输出几次n的值.可为什么答案是4?

红色的“;”就是问题的关键 WHILE是空循环

那前辈能不能帮我解答下~~
以下程序输出结果是:
#include<stdio.h>
main()
{int i,b,k=0;
for(i=1,i<=5;i++)
{b=i%2;
while(b-->=0) k++;
}
printf("%d,%d",k,b);
}
答案是8,-2,为什么?
我是这么理解的:while(b-->=0)就是说b的值要>0,b=i%2才会被执行,而我觉得既然1<=i<5,那么b的值就永远不可能为负,这应该变成死循环了,不知道我错哪里?


----------------解决方案--------------------------------------------------------
14 楼的问题是这样的,这是我在纸上写的
i k b

1 1 0
1 2 -1
2 3 -1
3 4 0
3 5 -1
4 6 -1
5 7 0
5 8 -1
最后在做一次就是8,-2 了
----------------解决方案--------------------------------------------------------
以下是引用inku在2006-9-24 11:40:10的发言:

那我再问一道题目
以下程序输出结果是:
#include<stdio.h>
main()
{int i,b,k=0;
for(i=1,i<=5;i++)
{b=i%2;
while(b-->=0) k++;
}
printf("%d,%d",k,b);
}
答案是8,-2,为什么?
我是这么理解的:while(b-->=0)就是说b的值要>0,b=i%2才会被执行,而我觉得既然1<=i<5,那么b的值就永远不可能为负,这应该变成死循环了,不知道我错哪里?

循环条件中b--,这里b会改变的.所以不会造成死循环.

----------------解决方案--------------------------------------------------------
  相关解决方案