C语言出现死循环

2022-04-06 教育 42阅读
这要看你输入什么了。
有一个要点:scanf()的返回值是它成功读入值的个数。

如果你第一次输入一个整数,那么第一个scanf函数会成功读入一个整数,它的返回值就是1,即ret的值是1。那么for循环的关系表达式:ret!=1就不成立,整个循环就不会执行,程序直接停止。

如果你第一次输入了非整数,那么第一个scanf函数成功读入的值就是0,它返回0,即ret=0。此时for循环的关系表达式:ret!=1成立,for循环才会开始迭代。

如果你的程序执行的时候一直在打印,不给你输入的机会,说明你清空输入缓冲区的函数fflush没起作用,缓冲区里保存的第一次非法输入一直都在。
你把
fflush(stdin);
改成:
while(getchar()!='\n');
就好了。
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com