c++中while(cin)的问题 20
不论是while还是goto编译运行后都是无限输出“notanumber”,求问这是为什么,代码如下:intmain(){inta,result{1};cout<<"in...
不论是while还是goto编译运行后都是无限输出“not a number”, 求问这是为什么, 代码如下:
int main(){
int a, result{ 1 };
cout << "input a number:" << endl;
// retry:
// try{
// cin >> a;
// if (cin.fail())
// throw runtime_error("not a number!");
// }catch(runtime_error e){
// cout << e.what() << endl;
// goto retry;
// }
while(!(cin >> a)){
cout << "not a number!" << endl;
}
do{
result *= a;
}while(a-- > 1);
cout << "result is:\n\t" << result << endl;
return 0;
} 展开
int main(){
int a, result{ 1 };
cout << "input a number:" << endl;
// retry:
// try{
// cin >> a;
// if (cin.fail())
// throw runtime_error("not a number!");
// }catch(runtime_error e){
// cout << e.what() << endl;
// goto retry;
// }
while(!(cin >> a)){
cout << "not a number!" << endl;
}
do{
result *= a;
}while(a-- > 1);
cout << "result is:\n\t" << result << endl;
return 0;
} 展开
展开全部
#include<iostream>
using namespace std;
int main(){
int a=-5, result=1 ;
jiedian : cout << "input a number:" << endl;
cin>>a; //防止这里自动用 上次的缓存赋给 a 而不是停下等你输入?
if ( !(a>0) ){
cout << "not a number!" << endl<<endl<<endl;
cin.clear();
cin.sync();
cin.ignore(100,'\n');//必须清除cin缓存
goto jiedian ;
}
do{
result *= a;
}while(a-- > 1);
cout << "result is:\n\t" << result << endl;
return 0;
}
using namespace std;
int main(){
int a=-5, result=1 ;
jiedian : cout << "input a number:" << endl;
cin>>a; //防止这里自动用 上次的缓存赋给 a 而不是停下等你输入?
if ( !(a>0) ){
cout << "not a number!" << endl<<endl<<endl;
cin.clear();
cin.sync();
cin.ignore(100,'\n');//必须清除cin缓存
goto jiedian ;
}
do{
result *= a;
}while(a-- > 1);
cout << "result is:\n\t" << result << endl;
return 0;
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询