当我通过输入50000运行此程序时,输出停在633而不是50000,为什么以及如何解决它!??
int main()
{
long int n;
cin>>n; //n = input = 50000
double* r = new double[n];
for(long int i=0;i<n;i++)
{
cin>>r[i]; // each value is in range 6 digits
cout<<i<<" "<<r[i]<< endl; //i should stops at 49999
}
return 0;
}
答案 0 :(得分:1)
您没有检查
的结果cin>>r[i];
因此,在获得无效输入后cin
进入失败状态很容易发生。一旦遇到这种情况,在调用cin
之前,无法从cin.clear()
检索到更多数据。
你应该有一些像
这样的代码if(!(cin >> r[i])) {
cout << "Invalid input, please try again" << endl;
--i;
cin.clear();
}
来处理这个问题。