C语言实现问题描述:实现一个带有记分功能的24点游戏(简易版本,只使用1-13之间的数) 基本要求:程序随机自动生成四张牌(以1-13之间的数值代替),游戏者要求尽快给出表达式,只能使用 + - × % 运算。可以使用(),不涉及小数运算。比如机器给出四个数为3、3、6、2,游戏者输入表达式:(3+3-2)×6,程序检查运算成功。如果给出的四个数不能得出24,如:1、2、1、3,那么游戏者必须输入NO,要求计算机进入下一题,但此次如果是正确判断一样记分。如此玩3次,计算总分。任何一次在要求时间内不能给出表达式或NO,那么游戏此轮结束。 测试数据:任意输入4个1—13之间的数
时间: 2024-02-19 11:03:56 浏览: 55
以下是一份C语言实现带记分功能的24点游戏的代码,可以参考一下:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void generateCards(int cards[]);
int compute(int a, int b, char op);
int main() {
int cards[4];
int score = 0;
srand(time(NULL));
printf("24点游戏开始\n");
for (int i = 0; i < 3; i++) {
generateCards(cards);
printf("第%d题:", i + 1);
for (int j = 0; j < 4; j++) {
printf("%d ", cards[j]);
}
printf("\n");
int ans;
scanf("%d", &ans);
int a = cards[0], b = cards[1], c = cards[2], d = cards[3];
if (compute(compute(compute(a, b, '+'), c, '+'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '+'), c, '-'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '+'), c, '*'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '+'), c, '/'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '-'), c, '+'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '-'), c, '-'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '-'), c, '*'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '-'), c, '/'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '*'), c, '+'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '*'), c, '-'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '*'), c, '*'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '*'), c, '/'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '/'), c, '+'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '/'), c, '-'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '/'), c, '*'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else if (compute(compute(compute(a, b, '/'), c, '/'), d, '=') == ans) {
printf("回答正确!\n");
score++;
} else {
printf("回答错误!\n");
}
}
printf("游戏结束,您的得分为%d分\n", score);
return 0;
}
void generateCards(int cards[]) {
for (int i = 0; i < 4; i++) {
cards[i] = rand() % 13 + 1;
}
}
int compute(int a, int b, char op) {
if (op == '+') {
return a + b;
} else if (op == '-') {
return a - b;
} else if (op == '*') {
return a * b;
} else if (op == '/') {
if (b == 0 || a % b != 0) {
return -1; // 分母为0或除不尽的情况返回-1
} else {
return a / b;
}
} else {
return -1; // 非法运算符返回-1
}
}
```
在这个游戏中,使用`generateCards`函数随机生成四张牌,然后由玩家输入表达式,程序判断表达式是否等于24,如果等于则记分,并进入下一题,否则不记分,进入下一题。最后输出玩家的得分。
阅读全文