模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示:xAyB 其中,A前面的数字表示有几位数字不仅数字猜对了,而且位置也正确,B前面的数字表示有几位数字猜对了,但是位置不正确。 最多允许用户猜的次数由用户从键盘输入。如果猜对,则提示“Congratulations!”;如果在规定次数以内仍然猜不对,则给出提示“Sorry, you haven't guess the right number!”。程序结束之前,在屏幕上显示这个正确的数字c语言
时间: 2023-11-29 13:06:49 浏览: 128
以下是实现该猜数字游戏的C语言代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); // 初始化随机数种子
int answer[4]; // 存储正确答案的数组
int guess[4]; // 存储用户猜测的数字的数组
int A, B; // A和B的计数器
int max_guess; // 最多允许猜测的次数
int i, j, k; // 循环计数器
// 生成不重复的4位数字
for (i = 0; i < 4; i++) {
int num;
do {
num = rand() % 10;
for (j = 0; j < i; j++) {
if (num == answer[j]) {
num = -1; // 如果重复了,就标记为-1
break;
}
}
} while (num == -1);
answer[i] = num;
}
printf("Please input the maximum number of guesses you want to give: ");
scanf("%d", &max_guess);
for (k = 1; k <= max_guess; k++) {
printf("Please input your guess (4 different digits): ");
scanf("%1d%1d%1d%1d", &guess[0], &guess[1], &guess[2], &guess[3]);
// 计算A和B的个数
A = B = 0;
for (i = 0; i < 4; i++) {
if (guess[i] == answer[i]) {
A++;
} else {
for (j = 0; j < 4; j++) {
if (guess[i] == answer[j]) {
B++;
break;
}
}
}
}
// 输出提示信息
printf("%dA%dB\n", A, B);
if (A == 4) {
printf("Congratulations!\n");
return 0;
}
}
printf("Sorry, you haven't guessed the right number!\n");
printf("The answer is: %d%d%d%d\n", answer[0], answer[1], answer[2], answer[3]);
return 0;
}
```
运行程序后,会要求用户输入最多允许猜测的次数,然后进入猜数字游戏界面。用户需要输入一个4位数字,程序会自动判断A和B的数量,并输出相应的提示信息。如果用户猜对了,程序会输出“Congratulations!”并结束;否则,用户需要继续猜,直到猜对或者超过最多允许猜测的次数。如果超过了最多允许猜测的次数,程序会输出正确答案并结束。
阅读全文