数字游戏.程序产生一个四位随机整数,这个四位数各个数码均不相同,你能猜出这个数是多少吗?,规则如下: 1.如果你猜中一位数字但位置不正确,则显示一个- 2.如果你清中一位数字且位置也正确,则显示一个+ 如:假如原数为1689.你猜的数为3694.则显示一 3.你只有十次机会,努力吧少年? 按任意健开始游戏: 用C语言表达
时间: 2023-06-16 16:05:05 浏览: 43
下面是一个简单的C语言程序实现这个数字游戏的逻辑:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main() {
// 生成随机四位数
srand(time(0));
int number = rand() % 9000 + 1000;
// 确保四位数各个数字不相同
int a = number / 1000;
int b = number / 100 % 10;
int c = number / 10 % 10;
int d = number % 10;
while (a == b || a == c || a == d || b == c || b == d || c == d) {
number = rand() % 9000 + 1000;
a = number / 1000;
b = number / 100 % 10;
c = number / 10 % 10;
d = number % 10;
}
printf("开始猜数字游戏!\n");
printf("你有十次机会猜出这个四位数,每次输入一个四位数:\n");
int guess, round = 0;
while (round < 10) {
scanf("%d", &guess);
if (guess < 1000 || guess > 9999) {
printf("请输入一个四位数!\n");
continue;
}
int a1 = guess / 1000;
int b1 = guess / 100 % 10;
int c1 = guess / 10 % 10;
int d1 = guess % 10;
if (a1 == b1 || a1 == c1 || a1 == d1 || b1 == c1 || b1 == d1 || c1 == d1) {
printf("四个数字不能相同!\n");
continue;
}
int A = 0, B = 0;
if (a1 == a) {
A++;
} else if (a1 == b || a1 == c || a1 == d) {
B++;
}
if (b1 == b) {
A++;
} else if (b1 == a || b1 == c || b1 == d) {
B++;
}
if (c1 == c) {
A++;
} else if (c1 == a || c1 == b || c1 == d) {
B++;
}
if (d1 == d) {
A++;
} else if (d1 == a || d1 == b || d1 == c) {
B++;
}
if (A == 4) {
printf("恭喜你猜对了!\n");
return 0;
} else {
printf("%dA%dB\n", A, B);
round++;
}
}
printf("很遗憾,你没有在十次机会内猜出这个数字:%d\n", number);
return 0;
}
```
程序首先生成一个随机的四位数,并确保各个数字不相同。然后进入游戏循环,每次读入玩家的猜测数字,检查是否符合要求(四位数,各个数字不相同),然后计算出猜测结果并输出。如果猜对了,程序结束;否则,继续循环,直到玩家猜对或者猜了十次。