各位大虾这个问题怎么解决

来源:百度知道 编辑:UC知道 时间:2024/06/22 13:41:31
#include <iostream>
int main()
{
using std::cout;
using std::endl;
using std::cin;
int man;
cout << "1.张三 2.李四 3.王二麻子\n";
loop:
cout << "\nThe man is: ";
cin >> man;
while (man == 1 || man == 2 || man ==3 )
{
if (man == 1 || man == 2 )
cout << "\n他是丑男!\n";

else
cout << "\n他是帅哥!";
cout << endl;
goto end;
}
goto loop;
end:
cin >> man;
return 0;
}

上面这个运行的时候 如果给man赋值为 1.2.3 以外的数字时 可以正常循环

但是当输入成 字母和其他非数字字符时 会刷成满屏幕的
cout << "\nThe man is: "; 这一句!

是man的定义错误么?怎么改能解决这个问题?

//---------------------------------------------------------------------------

#include <iostream>
int main()
{
using std::cout;
using std::endl;
using std::cin;
int man;
cout << "1.张三 2.李四 3.王二麻子\n";
loop:
cout << "\nThe man is: ";
cin>>man;
cin.clear(); //注意这里
cin.sync();
while (man == 1 || man == 2 || man ==3 )
{
if (man == 1 || man == 2 )
cout << "\n他是丑男!\n";

else
cout << "\n他是帅哥!";
cout << endl;
goto end;
}
goto loop;
end:
cin >> man;
return 0;
}

//---------------------------------------------------------------------------

while (man == 1 || man == 2 || man ==3 )
改成
while (cin && (man == 1 || man == 2 || man ==3) )

或者在
if (man == 1 || man == 2 )
cout << "