c语言中 为什么有时候输入.就陷入死循环了???

c语言中 为什么有时候输入.就陷入死循环了???

那要看你输入的是什么,还有具体问题具体分析。
比如说有的时候让你输入除数,你输入了0。0是不能做除数的,而你的程序中又没有列出当用户输入0时,程序应该干什么,是应该报错呢,还是当做1处理呢。计算机不知道该怎么做,他只知道0不能做除数,那么结果就不能被计算出来,所以程序就只能等在哪个地方,也就是死循环了。
类似的,比如你让用户输入一个数字,你规定当用户输入 1 时,就执行程序 1 ,当用户输入 2 时,就执行程序 2 。就只有这两种情况,可是如果用户输入的是 3 或者其他的什么数时,那应该执行什么呢?你没说,计算机就更不知道了。除了死循环还能干什么呢?
再比如说你程序本身逻辑上的错误如 for(int i=10;i<11; )
{
sum=sum+i;
}
这个 for 循环中 i 始终不变,而且 i 始终满足循环条件,那么当程序执行时就永远陷在这个循环中出不来了,也就是死循环,这应该叫临界条件不明确。
还有的时候,计算量太大,比如调用递归函数太多,计算比较慢,你也可能认为是陷入死循环了。也有是因为计算机系统本身的原因。不过这种情况比较少。
总的来说就是编程序的人考虑不够周全,如果把所有的情况都考虑进去,让每种情况都能执行下去,就基本上不会出现死循环了。
解决办法嘛,第一种,你可以在程序中把用户输入的数据先判断一下是不是0,如果是就报错,不是就继续执行。 第二种,你可以给出其他情况的解决办法, switch 语句不就是这样吗,每一个 case 值都给出一种执行语句,最后还要有一个 default 语句来预防个别想不到的情况吗?其实思想都是相同的。 第三种的话,没办法,你只能是在写程序的时候认真点,写完后在认真检查一下。其实归根结底还是你想到想不到的问题。
基本上就这么多了,考虑周全一点,我是不是常说吗,不要把你的客户当成比你还厉害的人,要把客户想的最傻,你才能编写出最完美的程序来。
希望能对你有所帮助,加油!!
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-05-07
我也不明白这点,也遇到过这样的事,以我的推测吧!就是当输入数据类型与需要的数据类型不一样时,就产生输入异常,但C语言里本身没有处理异常的能力,从而导致程序异常,时而死循环,或而程序异常退出。
第2个回答  2011-05-08
看下循环的条件是不是一直满足,如果是的话,就去修改下。
第3个回答  2011-05-07
那要看你写了什么代码了
第4个回答  2011-05-07
应该是你写的语句不正确导致死循环,
你的问题问的很不清晰

c语言中 为什么有时候输入.就陷入死循环了???
还有的时候,计算量太大,比如调用递归函数太多,计算比较慢,你也可能认为是陷入死循环了。也有是因为计算机系统本身的原因。不过这种情况比较少。总的来说就是编程序的人考虑不够周全,如果把所有的情况都考虑进去,让每种情况都能执行下去,就基本上不会出现死循环了。解决办法嘛,第一种,你可以在...

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

...C语言的顺序表为什么输入有小数点的数就陷入了死循环呢? #include<...
简单回答:整个程序都是在输入整数,所以不能输入带小数点的实数。举例说明:scanf("%d", &x);如果输入一个小数 23.54和回车, 则scanf只读掉23,留下 .54和回车 如果再次遇到 scanf("%d", ...)它不会输入新的内容,而是继续读剩下的 .54和回车。由于 .54不是整数,无法读,scanf 语句被跳...

c语言 scanf(%d,a);输入字符为什么会进入死循环?
那么输入了字符它就一直留在输入缓冲区;只要缓冲区有字符,scanf就要去读,一读不是数字,它就跳过,试图等到输入缓冲区没有字符了才等待你输入……如此反复,当然就“死循环”了。为了验证,你在printf(you lose!!n);后加一句getchar();,把缓冲区里的那个非数字字符接收掉,看看还会不会是“死循...

C语言这个 代码 为什么 输入浮点型 和 整形 就会 进入死循环啊
a);这里scanf会检测用户输入的是否是整型,如果是整型,则从缓冲区读取赋给a,如果不是则不会赋值给a,则用户输入的东西 就会留在缓冲区中,这样就造成了下次scanf读取时,由于缓冲区中有东西存在,它会直接从缓冲区中读取,结果还是不符合,还是留在 缓冲区,就这样会一直下去。所以造成了死循环。

c语言中一般运行后停止工作有哪些情况
只要编译通过,一般情况下C语言程序停止工作,多为输入输出格式不对,或计算陷入死循环。1、输入输出格式不对。最常见的就是&符号,该有的没有,不该有的打了&符号。例如:int n;scanf("%d",n);n前少打了&符号。编译能通过,执行时就会出现停止工作的情况。2、个别计算陷入死循环的情况,例如:i...

C语言 陷入死循环
把scanf("%d",&i); 改成 if ( scanf("%d",&i)==0) i=4; 其他不变,就可以了。

这个C语言程序输入字母会出现死循环,为什么?怎么办?
输入数据后,判断一下scanf函数的返回状态,返回0则读取失败。失败的原因有很多可能,比如你的这道例子,指定输入数字,但是却输入了字符,就会返回0,而且scanf不会有动作。由于num没有初始化,所以它是一个垃圾值,这就是死循环的原因。另外,如果想要输入指定字符退出的话,在多加一个判断即可。

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

这个程序为什么输入数字就是正常的,但输入一个字符就会陷入死循环!望...
在scanf("%d",&cn);的后面加上fflush(stdin);来清空输入缓存。否则每次scanf都会失败的。你没有判断scanf的返回值,如果判断了你会发现scanf每次都返回0,这是失败的。因为类型不匹配。因为scanf返回0,因此cn的值是堆栈中的随机值,所以很难等于3.--- 谁说fflush不是C标准来的?它的实现的确根...

相似回答