c++编写“猜数字游戏,要求:该游戏可以由程序随机产生一个 N 位数字,或者用户输入一个 N 位数字,作为待猜测数字,玩游戏者开始猜测后,可以有 M 次机会输入数字来匹配上面的待猜测数字,用户每输入一次,系统给出本次猜测结果:A 表示位置正确且狮数字正确;B 表示数字正确而位置不正确。某次猜中后,游戏结束,若 M 次机会用完,游戏也结束”的程序
时间: 2024-03-09 10:47:58 浏览: 26
好的,我可以为您提供一个简单的 C++ 猜数字游戏程序:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <cstring>
using namespace std;
const int MAX_N = 10;
// 产生一个随机的 n 位数
string generateNumber(int n) {
srand(time(NULL));
string number = "";
for (int i = 0; i < n; i++) {
number += to_string(rand() % 10);
}
return number;
}
// 计算 A 和 B 的数量
void calculateAB(string secret, string guess, int &a, int &b) {
a = b = 0;
for (int i = 0; i < secret.length(); i++) {
if (secret[i] == guess[i]) {
a++;
} else {
int pos = secret.find(guess[i]);
if (pos != string::npos) {
b++;
}
}
}
}
int main() {
int n, m;
cout << "请输入数字的位数 n:";
cin >> n;
cout << "请输入你想猜的次数 m:";
cin >> m;
// 产生一个 n 位数
string secret = generateNumber(n);
// 开始猜测
int guessCount = 0;
while (guessCount < m) {
string guess;
cout << "请输入你的猜测:";
cin >> guess;
int a, b;
calculateAB(secret, guess, a, b);
cout << "结果是:" << a << "A" << b << "B" << endl;
if (a == n) {
cout << "恭喜你猜中了!" << endl;
break;
}
guessCount++;
}
if (guessCount == m) {
cout << "很遗憾,你没有在规定次数内猜中。正确答案是:" << secret << endl;
}
return 0;
}
```
程序流程:
1. 用户输入数字的位数 n 和猜的次数 m。
2. 程序通过 `generateNumber()` 函数生成一个 n 位数作为待猜测数字。
3. 用户开始猜测,每次输入一个 n 位数作为猜测结果。
4. 程序通过 `calculateAB()` 函数计算猜测结果和待猜测数字的 A 和 B 数量。
5. 程序输出本次猜测结果,如果猜测结果和待猜测数字完全一致,则猜测成功,游戏结束。
6. 如果在规定次数内没有猜中,则游戏失败,程序输出待猜测数字,并结束游戏。
希望能够帮助到您!