c++,如果我输入的不是指定的int,为什么就进入死循环了啊

2025-04-23 17:54:30
推荐回答(2个)
回答1:

看下面的修改: 运行一下 你自然知道为什么 ?
输入流问题!!!!
cin读到字符与int不匹配 并没有从输入缓冲区remove掉你输入的字符
这样下次循环到时 由于输入缓冲区有数据 不等待用户(你)输入数据 便开始读数据
但是还是字符 一直这样错下去 自然死循环了 看下面的失败判断和清除缓冲区的办法
while(true)
{
int yuan=0;
cout<<"请输入投沙数量:"< if ( (cin>>n).fail() ) {
cout<<"输入错误 n没有被正确设置,仍使用原值n="< cin.clear();
}
srand((unsigned)time(NULL));

回答2:

#include
#include

using namespace std;
bool tousha();
int main()
{
char f='0';
int n=9999;

while(true)
{
int yuan = 0;

cin>>f;
if ( (f == 'x')||(f == 'X'))
{
break;
}

cout<<"请输入投沙数量:"< cin>>n;

srand((unsigned)time(NULL));

for(int i=1;i<=n;++i)
{
if(tousha()==true)
yuan+=1;
}
cout<<"投沙总数为\t"< cout<<"圆内沙粒为\t"< cout<<"pi大约值为\t"<<(double)yuan*4/n< cout<<"退出请输出X。继续请按任意键"<
}
return 0;
}
bool tousha()
{
double x,y;
x=rand()/(double)RAND_MAX;
y=rand()/(double)RAND_MAX;
if(x*x+y*y<=1)
return true;
return false;
}