如题所述
#include <stdio.h>
#include <stdlib.h>
int main()
{
int choice;
while(scanf("%d",&choice))
{
printf("choice==%d\n",choice);
}
system("pause");
}
因为你输入的不是数字,而你定义的又是数字类型的所以会出现上面的问题,在输入的时候在一个判定就可以了
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-07-23
choice是int型,你输入一个char型的字符是肯定不行的。如果想要输入字符的话要写成scanf("%c", choice),当然,要把choice声明成char型。
第2个回答 推荐于2018-04-30
输入字符时,scanf没有在你输入的内容里找到数字,所以实际choice没有被赋值,choice是个随机数。追问
就像上面的那个程序。我如果输入的是3,程序会提醒我重新输入。但我输入的如果是字符。就会一直打印下面那句话,陷入了死循环。这样程序就没了。。
scanf返回值是成功赋值的数据项数,你可以这么改:
while(scanf("%d", &choice)!=1 || (choice !=1 && choice!=2))
printf("\n输入错误,请重新输入:“);
这样,如果输入字符,scanf返回为0,同样满足while条件,进入循环体输出下面那句话。
还是不行,你自己运行试试。和我上面那个程序是一样的问题,当输入的是字符时,就陷入死循环。我截图你看看.
sorry,忘记缓存里还有东西了。改成这样:
while(scanf("%d",&choice), fflush(stdin),choice!=1&&choice!=2)
printf("\n输入错误,请重新输入:");
用fflush清理一下缓存。
第3个回答 2013-07-23
你的输入输出都是int型 但现在给了一个char的值进去 会引起错误的追问
我知道。所以我才要想解决这个问题,当输入不是数字的时候可以继续输入,直到输入是数字为止
第4个回答 2013-07-23
因为你的输出格式有问题
改成printf("choice==%c\n",choice);试一试
改成printf("choice==%c\n",choice);试一试