用c++语言设计一个猜数字游戏题目二:猜数字游戏 要求:该游戏可以由程序随机产生一个 N 位数宇,或由用户输入一个N位数宇,作为待猜测数宇 (各位数宇不重复出现,。玩游戏者开始猜测后,可以有 M 次机会输入数字来匹配上面的待猜测数宇。用户每输入一次,系统给出本次猜测结果:^ 表示位置正确且数宇正确,B表示数字正确市位置不正确。比如: 2A1B,表示2位位置正确且数宇正确,!位数宇正确但是位置不正确。某次猜中后,游戏结束。若M次机会用完,游戏也结束。
时间: 2024-03-05 07:54:41 浏览: 75
C++语言实现 猜数字游戏
以下是使用C++语言设计的猜数字游戏,可以随机生成一个N位数,也可以由用户输入一个N位数作为待猜测数。具体实现代码如下:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
//获取输入的数字
void getInput(string &guess_str, int n)
{
cout << "请输入一个" << n << "位数: ";
cin >> guess_str;
while (guess_str.length() != n)
{
cout << "输入的数字不是" << n << "位数,请重新输入: ";
cin >> guess_str;
}
}
//生成随机数
void getRandom(string &guess_str, int n)
{
srand(time(NULL));
int num[n];
for (int i = 0; i < n; i++)
{
num[i] = rand() % 10;
for (int j = 0; j < i; j++)
{
if (num[j] == num[i])
{
i--;
break;
}
}
}
for (int i = 0; i < n; i++)
{
guess_str += to_string(num[i]);
}
}
//判断是否猜中
bool isCorrect(string guess_str, string input_str, int n)
{
int A = 0, B = 0;
for (int i = 0; i < n; i++)
{
if (guess_str[i] == input_str[i])
{
A++;
}
else
{
for (int j = 0; j < n; j++)
{
if (guess_str[i] == input_str[j])
{
B++;
break;
}
}
}
}
cout << A << "A" << B << "B" << endl;
if (A == n)
{
return true;
}
else
{
return false;
}
}
//主函数
int main()
{
int n, m;
cout << "请输入数字的位数: ";
cin >> n;
cout << "请输入猜测次数: ";
cin >> m;
string guess_str = "", input_str;
int times = 0;
bool is_game_over = false;
cout << "请选择随机生成一个" << n << "位数(0)或自己输入一个" << n <<"位数(1): ";
int choice;
cin >> choice;
if (choice == 0)
{
getRandom(guess_str, n);
}
else
{
getInput(guess_str, n);
}
while (!is_game_over && times < m)
{
cout << "请输入你的猜测: ";
cin >> input_str;
while (input_str.length() != n)
{
cout << "输入的数字不是" << n << "位数,请重新输入: ";
cin >> input_str;
}
times++;
is_game_over = isCorrect(guess_str, input_str, n);
if (is_game_over)
{
cout << "猜测成功!" << endl;
}
else if (times == m)
{
cout << "猜测失败!答案是" << guess_str << endl;
}
else
{
cout << "你还有" << m - times << "次机会" << endl;
}
}
return 0;
}
```
使用方法:在命令行或集成开发环境中编译运行即可。程序会先要求输入数字的位数和猜测次数,然后让你选择是随机生成一个N位数还是自己输入一个N位数。接着,你需要在每一轮中输入你的猜测,程序会返回本次猜测结果。如果猜中了,游戏结束;如果猜测次数用完了,游戏也结束。
阅读全文