百度 的效率 杂这么低呢

来源:百度知道 编辑:UC知道 时间:2024/07/05 03:37:44
#include"stdio.h"
main()
{

int i;

do{

scanf("%d",&i);
printf("%d",i);

}while(i>=101||i <1);

}

我输入字母而不是数字时,为啥是死循环.

你看条件啊,while(i>=101||i <1);
因为c的输入输出机制是输入输出流,scanf从io流中得到一个数据,从键盘得到的数据存在io流中,scanf如果发现io流空,才会从键盘读如数据到io流,再从io流中读入。
你那种情况是输入了字符,和%d不匹配,scanf读取失败,i的值为一随即的大数,很可能大于101,循环继续,io流中的字符仍在io流中没被读走,下次scanf读取又失败,i值仍没变,循环继续,符又留在io流中,于是就死循环了,
在循环内加getch()的话,冲掉上次得输入能避免死循环。

(i>=101||i <1);