一段c++代码陷入死循环了,高手帮忙....

来源:百度知道 编辑:UC知道 时间:2024/05/29 23:28:41
int num=0; //学生数目
do //判断,只能输入1-10的数字
{
cout<<"你有几个学生(1-10)?";
cin>>num;//这儿有个错误,惹输入的是字母,则程序会陷入死循环
if(num>10||num<1)
cout<<"输入错误,你只能拥有至少1个,至多10个学生!!"
<<endl;
}while(num>10||num<1);

上面这段程序,为什么只要输入的是字母 就会陷入循环呢
我的意思是,如果num>10或者num<1,则判断重新输入~
现在的问题是,如果你输入的数值是数字,则完全可以达到我的目的(大于10或小于1,就会要求重新输入),但是只是一输入一个字母,程序马上陷入死循环!!

double d;
cout<<"请输入一些数字(在最后输入end结束): ";

if (!cin.eof())
{
cin.clear();
string s;
cin>>s;
if (s != "end")
{
cerr<<"输入错误\n";
return 1;
}
}
像这样进行输入判断就可以了.然后再在后面加上你的下面循环语句即可.
int num=0; //学生数目
do //判断,只能输入1-10的数字
{
cout<<"你有几个学生(1-10)?";
cin>>num;//这儿有个错误,惹输入的是字母,则程序会陷入死循环
if(num>10||num<1)
cout<<"输入错误,你只能拥有至少1个,至多10个学生!!"
<<endl;
}while(num>10||num<1);//这里错误,改为num<10&&num>1

你的while写错了吧 你的程序到底要表达的是什么??

你的原意本来是输入1-10 但是你的while条件判断里却是要求输入是大于10或者小鱼1

所以你输入1-10后 程序跳出来了 如果输出的是10+或者1-

你又要输出错误?但是循环还是继续的,你就是要看错误输出吗?

还有 你每次循环都自己输入输出 意义在哪里??

你while(num>10||num<1); 放错了地方,do while 是不管你做什么,首先循环一次,你的原意是让它出现10后就报错,然后停止,但是它叛断大于10后,是回到do这里来,正好反了,它回到do这里.还有一点,想问问,你循环是为什么?是错了后重新输入呢?还是只有