在c++中程序无限循环了,怎么停下来?

void main()
{
int x;
long y;
printf("请输入您本次要存入几个学生的信息,提示在0到30之间,输入为纯数字:");
scanf("%d",&x);
while(x>30||x<0)
{
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
}

如果用户输入错误呢? 比如我输入a然后回车,这下爽了,无限循环这句话:输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:
怎么让它停,现在我很需要帮助
用break;是不行的

#include <stdio.h>
void main()
{
int x;
printf("请输入您本次要存入几个学生的信息,提示在0到30之间,输入为纯数字:");
scanf("%d",&x);
while(1)
{
if(x<=30 && x>0)
break;
else
{
getchar();//加上这句话就行了。
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间\n");
scanf("%d",&x);
}
}

}

//加上getchar();
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-12-21
#include<cstdio>
int main()
{
int x;
long y;
printf("请输入您本次要存入几个学生的信息,提示在0到30之间,输入为纯数字:");
scanf("%d",&x);
while(x>30||x<0)
{
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
}
return 0;
}
我编译没什么问题,IDE是VS2010
第2个回答  2010-12-21
while(x>30||x<0)
{
fseek(stdin,0,SEEK_END);
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
}
第3个回答  2010-12-21
while(x>30||x<0)
{
x = 1; //让x先变成正常的数字,这样就不会一直输出错误信息了,输出错误信息后会等待再次输入,如果输入依然出错,继续回到这里,如果输入正确,就直接跳出while了
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
}
第4个回答  2010-12-21
void main()
{
int x;
long y;
printf("请输入您本次要存入几个学生的信息,提示在0到30之间,输入为纯数字:");
scanf("%d",&x);
if(x>30||x<0)
{
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
}
第5个回答  2010-12-21
void main()
{
int x;
long y;
printf("请输入您本次要存入几个学生的信息,提示在0到30之间,输入为纯数字:");
scanf("%d",&x);
while(x>30||x<0)
{
printf("输入错误,请重新输入您本次要输入的学生信息的人数,在0到30之间:");
scanf("%d",&x);
break;
}
相似回答