问题描述
- C++新手问题(死亡循环体)
-
case 3:
//题三
{
while (x == 1)
{
cout << "编程实现:从键盘输入任意多个整数(以输入字符a结束输入),输出第三大的整数n";
Formatted1(str);
cout << "演示功能;" << endl;
cout << "Please enter your nums : n";
ThirdNum();
Formatted1(str);
cout << "是否再展示一次?n请输入1(再展示一次) OR 0(退出): ";
cin >> x;
}
break;
}```void Formatted1(string s)
{
cout << s;
cout << endl;
cout << s;
cout << endl;
}
//找第三大的数字
void ThirdNum()
{
int XX = 0;
fir = numeric_limits::min(), sec = numeric_limits::min(), thi = numeric_limits::min();
cin >> XX;
while (cin.good())
{
if (XX > fir)
{
thi = sec;
sec = fir;
fir = XX;
}
else if (XX > sec && XX < fir)
{
thi = sec;
sec = XX;
}
else if (XX > thi && XX < sec)
{
thi = XX;
}
cin >> XX;
}
Formatted1(str);
if (fir == numeric_limits::min())
c1 = 3;
else if (sec == numeric_limits::min())
c1 = 2;
else if (thi == numeric_limits::min())
c1 = 1;
if (c1 != 0)
cout << "you have " << c1 << " numbers not to input .n";
else
cout << "Your thrid number is :" << thi << endl;
XX = numeric_limits::min();
return;
}
全局变量
int x = 1; //用户输入量
int fir = numeric_limits::min(), sec = numeric_limits::min(), thi = numeric_limits::min();
string str(50, '=');我的CASE 3是一个死循环, 请各位和我交流一下
解决方案
在case 3 中
cout << "是否再展示一次?n请输入1(再展示一次) OR 0(退出): "
语句后加上
cin.sync();
cin.clear();
进行清空缓冲区中的数据,然后再进行输入数据;
否则的话cin >> x会一直输出缓冲区的数据,而无法自己输入