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;
}
展开
 我来答
虐心_96
2016-12-13 · 超过29用户采纳过TA的回答
知道答主
回答量:87
采纳率:0%
帮助的人:29.1万
展开全部
#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;
}
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式