模拟文曲星上的猜数游戏,先由计算机随机生成一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示:xAyB 其中,A前面的数字表示有几位数字不仅数字猜对了,而且位置也正确,B前面的数字表示有几倍数字猜对了,但是位置不正确。 最多允许用户猜的次数由用户从键盘输入。如果猜对,则提示“Congratulations!”;如果在规定次数以内仍然猜不对,则给出提示“Sorry, you haven’t guess the right number!”。程序结束之前,在屏幕上显示这个正确的数字
时间: 2023-12-06 08:02:58 浏览: 131
猜数字(文曲星版)
5星 · 资源好评率100%
以下是一个简单的实现,希望能够帮到你:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
srand(time(NULL)); //初始化随机数种子
int answer[4]; //存储正确答案的数组
int guess[4]; //存储用户猜测的数组
int a, b; //用于存储xAyB中的A和B
int count = 0; //用于计算用户猜测的次数
int max_count; //用户允许猜测的最大次数
int i, j; //循环计数器
//生成正确答案
do {
answer[0] = rand() % 9 + 1; //第一位不能是0
answer[1] = rand() % 10;
answer[2] = rand() % 10;
answer[3] = rand() % 10;
} while (answer[0] == answer[1] || answer[0] == answer[2] || answer[0] == answer[3] || answer[1] == answer[2] || answer[1] == answer[3] || answer[2] == answer[3]);
printf("猜数游戏开始!\n");
printf("请输入您允许猜测的最大次数:");
scanf("%d", &max_count);
//开始猜数游戏
while (count < max_count) {
printf("请输入您猜测的4位数字(各位不同):");
scanf("%d", &guess[0]);
guess[1] = guess[0] / 10 % 10;
guess[2] = guess[0] / 100 % 10;
guess[3] = guess[0] / 1000 % 10;
if (guess[0] < 1000 || guess[0] > 9999 || guess[1] == guess[2] || guess[1] == guess[3] || guess[2] == guess[3]) {
printf("您输入的数字不符合要求,请重新输入!\n");
continue;
}
count++;
a = 0;
b = 0;
for (i = 0; i < 4; i++) {
if (guess[i] == answer[i]) {
a++;
}
for (j = 0; j < 4; j++) {
if (guess[i] == answer[j] && i != j) {
b++;
}
}
}
printf("%dA%dB\n", a, b);
if (a == 4) {
printf("Congratulations!\n");
return 0;
}
}
printf("Sorry, you haven’t guess the right number!正确数字为:%d%d%d%d\n", answer[0], answer[1], answer[2], answer[3]);
return 0;
}
```
这个程序中,我们首先使用 `srand()` 函数初始化随机数种子,然后使用 `rand()` 函数生成各位不同的4位数字作为正确答案。用户通过键盘输入自己猜测的数字,程序会对输入的数字进行检查,如果不符合要求(例如不是4位数字、各位数字不同等),则要求用户重新输入。如果输入的数字符合要求,则程序会计算出xAyB,其中A表示数字和位置都正确的个数,B表示数字正确但位置不正确的个数。程序会不断提示用户输入,直到用户猜测正确或者尝试次数超过了允许的最大次数。
阅读全文