用C语言写模拟文曲星上的猜数游戏,先由计算机随机生成 一个各位相异的4位数字,由用户来猜,根据用户猜测的结果给出提示:xAyB 其中,A前面的数宇表示有几位数字不仅数宇猜 对了,而且位置也正确,B前面的数字表示有几位数 宇猜对了,但是位置不正确。 最多允许用户猜的次数由用户从键盘输入。如果猜对,则提示"Congratulations!”;如果在规定次数以内仍然猜不对,则给出提示"Sorry, you haven't guess the right number!”。程序结束之前,在屏幕上品示这个正确的数字。
时间: 2023-12-30 08:02:34 浏览: 202
第7章 数组-8数组的其他应用——文曲星猜数游戏1
好的,下面是用 C 语言编写的模拟文曲星上的猜数游戏:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define DIGITS 4
void generateRandomNumber(int *number);
void guessNumber(int *number, int maxGuesses);
int main() {
int number[DIGITS];
int maxGuesses;
printf("Welcome to the number guessing game!\n");
printf("You need to guess a %d-digit number with no repeating digits.\n", DIGITS);
printf("How many guesses do you want to have? ");
scanf("%d", &maxGuesses);
generateRandomNumber(number);
guessNumber(number, maxGuesses);
printf("The correct number was ");
for (int i = 0; i < DIGITS; i++) {
printf("%d", number[i]);
}
printf(".\n");
return 0;
}
// 生成随机数
void generateRandomNumber(int *number) {
int used[10] = {0};
srand(time(NULL));
for (int i = 0; i < DIGITS; i++) {
int digit;
do {
digit = rand() % 10;
} while (used[digit]);
used[digit] = 1;
number[i] = digit;
}
}
// 猜数字
void guessNumber(int *number, int maxGuesses) {
int guess[DIGITS];
int guesses = 0;
while (guesses < maxGuesses) {
printf("Guess #%d: ", guesses + 1);
scanf("%1d%1d%1d%1d", &guess[0], &guess[1], &guess[2], &guess[3]);
int correct = 0, misplaced = 0;
int used[DIGITS] = {0};
for (int i = 0; i < DIGITS; i++) {
if (guess[i] == number[i]) {
correct++;
used[i] = 1;
}
}
if (correct == DIGITS) {
printf("Congratulations!\n");
return;
}
for (int i = 0; i < DIGITS; i++) {
if (!used[i]) {
for (int j = 0; j < DIGITS; j++) {
if (i != j && guess[i] == number[j] && !used[j]) {
misplaced++;
used[j] = 1;
break;
}
}
}
}
printf("%dA%dB\n", correct, misplaced);
guesses++;
}
printf("Sorry, you haven't guessed the right number!\n");
}
```
代码解释:
1. 定义 `DIGITS` 常量表示数字的位数。
2. `generateRandomNumber()` 函数用于生成一个各位不同的随机数字,使用一个 `used` 数组记录哪些数字已经使用过了。
3. `guessNumber()` 函数用于进行猜数游戏,使用一个 `guess` 数组记录用户的猜测,使用一个 `used` 数组记录哪些数字已经被匹配过了。
4. 在 `main()` 函数中,首先提示用户游戏规则和要求输入猜测次数,然后生成随机数字并进行游戏,最后显示正确答案。
希望这个程序对你有帮助!
阅读全文