用C++设计一个程序,能提供下列功能: 由计算机随机产生4位(没有重复的)数字。 (1) 猜数,用户从键盘输入4位不重复的数。 (2) 匹配。如果用户给出的数字和计算机产生的数字相同,则用户获胜。否则。计算机给出提示mAnB,m表示数字和位置都匹配的个数,n表示数字匹配但位置不匹配的个数。假设计算机产生的数字是1392,用户输入数字1234,则计算机给出提示1A2B。 (3) 帮助。输入“qqq”,给出提示“第一位数字正确”。 (4) 记分。每猜一次扣30分,猜对一个数字(数字位置都对)加20分,给出总分。
时间: 2024-02-24 08:58:33 浏览: 62
好的,以下是一个提供上述功能的C++程序示例:
```c++
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <string>
using namespace std;
int main()
{
int secretNum[4], guess[4];
int numGuesses = 0, score = 0;
bool win = false;
srand(time(0)); // 设置随机数种子
// 生成随机数
secretNum[0] = rand() % 9 + 1;
do {
secretNum[1] = rand() % 10;
} while (secretNum[1] == secretNum[0]);
do {
secretNum[2] = rand() % 10;
} while (secretNum[2] == secretNum[0] || secretNum[2] == secretNum[1]);
do {
secretNum[3] = rand() % 10;
} while (secretNum[3] == secretNum[0] || secretNum[3] == secretNum[1] || secretNum[3] == secretNum[2]);
cout << "欢迎来到猜数字游戏!" << endl;
cout << "计算机已经随机产生了一个4位数字。" << endl;
while (!win && numGuesses < 10) {
// 输入猜测的数字
cout << "请输入4位不重复的数字(如1234):";
cin >> guess[0] >> guess[1] >> guess[2] >> guess[3];
// 判断数字是否重复
if (guess[0] == guess[1] || guess[0] == guess[2] || guess[0] == guess[3] || guess[1] == guess[2] || guess[1] == guess[3] || guess[2] == guess[3]) {
cout << "输入的数字有重复,请重新输入!" << endl;
continue;
}
numGuesses++;
score -= 30;
// 匹配数字和位置
int numMatch = 0, numAndPosMatch = 0;
for (int i = 0; i < 4; i++) {
if (guess[i] == secretNum[i]) {
numAndPosMatch++;
score += 20;
} else {
for (int j = 0; j < 4; j++) {
if (guess[i] == secretNum[j]) {
numMatch++;
}
}
}
}
// 输出匹配结果
if (numAndPosMatch == 4) {
cout << "恭喜你,猜对了!" << endl;
win = true;
} else {
cout << numAndPosMatch << "A" << numMatch << "B" << endl;
}
// 帮助
if (guess[0] == secretNum[0]) {
cout << "第一位数字正确!" << endl;
}
}
// 猜了10次还没猜对
if (!win) {
cout << "很遗憾,你猜了10次都没猜对。正确答案是";
for (int i = 0; i < 4; i++) {
cout << secretNum[i];
}
cout << endl;
}
// 输出分数
cout << "你的得分是:" << score << endl;
return 0;
}
```
这个程序会生成一个不重复的4位数字,然后让用户猜10次,每次猜完后会告诉用户数字和位置都匹配的个数和数字匹配但位置不匹配的个数,直到猜对为止。如果猜了10次还没猜对,程序会结束并告诉用户正确答案是什么。用户可以输入"qqq"获得帮助。程序会计算用户的得分,每猜一次扣30分,猜对一个数字(数字位置都对)加20分。
阅读全文