#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
int guess = 0 ,number = 0, i = 1;
srand((unsigned)time(nullptr));//time()用系统时间初始化种。为rand()生成不同的随机种子。
number = rand() % 101;
cout << "猜测一个0到100的整数\n";
while(1)
{
cout << "第" << i << "次猜:";
cin >> guess;
if (guess == number)
{
cout << "恭喜你猜对了\n";
break;
}
else if (guess > number)
{
cout << "太大\n";
}
else if (guess < number)
{
cout << "太小\n";
}
else
{
cout << "输入无效\n";
}
i++;
}
}
但是在输入字母后陷入死循环,原因是guess被定义为整型却输入了字符
修改后如下
//c++
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int main()
{
int guess = 0 ,number = 0, i = 1;
srand((unsigned)time(nullptr));
number = rand() % 101;
cout << "猜测一个0到100的整数\n";
while(1)
{
cout << "第" << i << "次猜:";
cin >> guess;
if (cin.fail())
{
cin.clear(); // 清除cin流
cin.ignore(1024, '\n'); // 清除缓冲区字符,不加参数一次只清除一个
cout << "输入无效\n";
}
else if (guess == number)
{
cout << "恭喜你猜对了\n";
break;
}
else if (guess > number)
{
cout << "太大\n";
}
else if (guess < number)
{
cout << "太小\n";
}
i++;
}
}