C语言判断输入的是否为数字 并且是否小于4大于1 如果不满足 重新循环输入

来源:百度知道 编辑:UC知道 时间:2024/06/19 16:37:46
main()
{
int i,j=3;
while(1){
printf("Input:");
if(scanf("%d",&i)){
if(1<=i&&i<=4)
break;
if(i<1||i>4){
printf("wrong number!\n");
}
}else{
printf("no number!");
}
}
printf("right!");
getch();
}
==============================================================
根据scanf返回值可知当scanf("%d",&i)输入的是整数时 返回1
否则返回0;
谁能给我解释这段程序 为什么输入字母的时候会陷入死循环?如何解决?
哥们~~~加个break有什么用啊~~!!我要的是如果输入的不是数字 输入的是字母 重新循环输入 一直到输入的是数字1-4为止!!

会产生一个错误,这个标志不被置回
缓冲区没有被刷新

这个程序很不好,为避免死循环 printf("no number!");后加个break;
main()
{
int i,j=3;
while(1) {
printf("Input:");
if(scanf("%d",&i))
{
if(1<=i&&i<=4)
{ printf("right!");
break;
}
if(i<1||i>4)
{
printf("wrong number!\n");

}
}
else{
printf("no number!");break;
}
}

} 看看下一个:
main()
{
int i,j=3;
while(1) {
printf("Input:");
i=getchar();
if('1'<=i&&i<='9')
{
if('1'<=i&&i<='4')
{ printf("right!");break;}