C语言的问题 为什么这成了死循环?

#include <stdio.h>
main ()
{
int i;
do
{
printf ("input a int number which >0\n");
scanf ("%d",&i);
printf("first i=%d\n",i);
}
while (i<=0);
printf ("second i=%d\n",i);
}
##########################
例如:
3 <Enter>
first i=3
second i=3
“此时i>0,退出循环”

-2<Enter>
first i=-2
input a int number which >0\n
“此时i小于0,进入输入键盘输入的循环”

-2.2<Enter>
first i=-2
input a int number which >0\n
first i=-2
input a int number which >0\n
first i=-2
input a int number which >0\n
........
“虽然i输入的数型有问题 但还是能表示出来i=-2
却进入了死循环 键盘也不能输入了。”
我知道输入的数型有错误 但怎么是这个情况?
谁能解释下?谢谢啦!

scanf()函数接收输入数据时,遇以下情况结束一个数据的输入:(不是结束该scanf函数,scanf函数仅在每一个数据域均有数据,并按回车后结束)。
① 遇空格、“回车”、“跳格”键。
② 遇宽度结束。
③ 遇非法输入。
所以你输入非整型数据时,都会无限循环。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-24
你输入什么是死循环啊?输入0或者负数 肯定就是死循环了
第2个回答  2011-07-24
哪有死循环啊,朋友,你看错了吧!根据你的条件输入的值大于零输入一个大于零的值就跳出循环了,怎么会是死循环呢,我这边运行没问题的!追问

你输入 一个负的小数看看 比如-3.14
反正就是不停的循环
而且不能从键盘输入新的数字了
也就是说Scanf函数跳过了
什么原因喃?

第3个回答  2011-07-24
不是吧,输入正数的话循环体执行一次就退出了呀
第4个回答  2011-07-24
while (i<=0);说明输入i<=0时一直做do里面的事件,都输负数就一直循环。。你输入的是正数的话会跳出循环的。。追问

知道啊
但是循环体里面有个
Scanf函数的
进入循环后 应该包含“从键盘再次输入”这个过程
但是我输入一个负小数后
没有进入“从键盘再次输入”这个过程
While(i<=0)就开始再次判定了
i的值没有改变 成了死循环。。。

追答

你的编译器有问题。。。重启试下。。

第5个回答  2011-07-24
你输入负数或者0会再让你输入,没有死循环,但是该程序,只有在输入正数时才会结束
很正常

c语言,为何这是死循环?
while(1)表示无条件执行循环(因为1表示真),而它的循环体是后面跟着的那个语句:也就是printf("%d",k-=3);所以程序会一直运行printf("%d",k-=3); 永远出不来。这条语句就相当于 while(1){ printf("%d",k-=3);} 加上大括号里面可以加多个语句作为循环体,如果没加大括号就是while后面的...

c语言问题,为什么陷入死循环?(当我输入时3.14])就是好奇输入符号会怎样...
会返回失败, 并且 ] 还在,这样, 循环就会一直在 ] 这里返回失败,于是就死循环了.你可以看scanf函数的返回值的说明.

c语言习题,为什么这是一个死循环
所以,if(n==s)这个分支,逻辑表达式n==s永远为假 这并不是死循环,而是无法输出结果(你的输出全写在这个分支里了)

C语言的问题 为什么这成了死循环?
③ 遇非法输入。所以你输入非整型数据时,都会无限循环。

C语言到#结束,但为什么我的程序会陷入死循环啊?
因为是在while前输入的数据,循环过程中这个数据一直存在。把scanf("%f%c%f",&a,&b,&c); while(b!='#'){改成while(scanf("%f %c%f",&a,&b,&c)==3 && b!='#'){。把所有的continue;删除。

C语言,下面代码为什么变成死循环了
i=b不是逻辑语句,而是赋值语句,代表i=10, 10数值在while 中为真,变成了 while true 就是死循环了

有什么问题 死循环了 C语言
\/\/while (str[i]!=0) \/\/ 死循环是这里导致的,这里只判断了第一个数不为零,然后进入了死循环 逻辑也有问题,帮你修正如下,仔细和你的对比下,并调试通过。望采纳!!!include<stdio.h> void main(){ int m,n,t,count=0,i;int str[100]={'0'};scanf("%d%d",&m,&n); \/\/ ...

c语言中 为什么有时候输入.就陷入死循环了???
这个 for 循环中 i 始终不变,而且 i 始终满足循环条件,那么当程序执行时就永远陷在这个循环中出不来了,也就是死循环,这应该叫临界条件不明确。还有的时候,计算量太大,比如调用递归函数太多,计算比较慢,你也可能认为是陷入死循环了。也有是因为计算机系统本身的原因。不过这种情况比较少。总的来...

C语言死循环问题 谁帮我解释一下。谢谢各位
因为scanf需输入整数却输入字符时,实际输入未成功,返回输入失败,下次执行SCANF时,会认为上次输入数据未读取,继续读取又报错,形成了死循环。

#C语言# 请问用递归实现 n!为什么是死循环?
在这个递归函数中,循环终止条件应该是 j >= m 而不是 j < m,否则函数将一直递归调用下去,直到栈溢出,导致死循环。此外,在递归调用中,应该传递 (m - 1) 而不是 (j + 1),以便递归到最终结果。以下是修正后的代码:int Fac(int m){ if (m <= 1) { \/\/ 递归终止条件 return 1...

相似回答
大家正在搜