简单的c语音写四则运算并用结构体保存题目以按f查看按y继续做题按n结束做题
抱歉,我是一个语言模型,无法提供交互式的编程环境。以下是一个简单的C语言程序,可以生成四则运算题目,并使用结构体保存题目。在控制台中按f可以查看题目,按y可以继续做题,按n可以结束做题。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
// 定义运算符的枚举类型
enum Operator {
ADD,
SUBTRACT,
MULTIPLY,
DIVIDE
};
// 定义题目结构体
struct Problem {
int num1;
int num2;
enum Operator op;
int answer;
};
// 生成随机数
int random(int min, int max) {
return min + rand() % (max - min + 1);
}
// 生成随机运算符
enum Operator randomOperator() {
int op = random(0, 3);
switch (op) {
case 0:
return ADD;
case 1:
return SUBTRACT;
case 2:
return MULTIPLY;
case 3:
return DIVIDE;
default:
return ADD;
}
}
// 生成随机题目
struct Problem generateProblem() {
struct Problem p;
p.num1 = random(1, 10);
p.num2 = random(1, 10);
p.op = randomOperator();
switch (p.op) {
case ADD:
p.answer = p.num1 + p.num2;
break;
case SUBTRACT:
p.answer = p.num1 - p.num2;
break;
case MULTIPLY:
p.answer = p.num1 * p.num2;
break;
case DIVIDE:
p.answer = p.num1 / p.num2;
break;
}
return p;
}
int main() {
srand((unsigned int)time(NULL)); // 初始化随机数种子
struct Problem problems[10]; // 定义题目数组
int score = 0; // 记录得分
char input; // 记录用户输入
for (int i = 0; i < 10; i++) {
problems[i] = generateProblem(); // 生成随机题目
}
printf("共生成10道四则运算题目,现在开始答题。\n");
for (int i = 0; i < 10; i++) {
printf("第%d题:", i + 1);
switch (problems[i].op) {
case ADD:
printf("%d + %d = ", problems[i].num1, problems[i].num2);
break;
case SUBTRACT:
printf("%d - %d = ", problems[i].num1, problems[i].num2);
break;
case MULTIPLY:
printf("%d * %d = ", problems[i].num1, problems[i].num2);
break;
case DIVIDE:
printf("%d / %d = ", problems[i].num1, problems[i].num2);
break;
}
scanf("%d", &input); // 获取用户输入
if (input == 'n') {
break; // 如果用户输入n,则结束答题
}
if (input == 'f') {
printf("第%d题:", i + 1);
switch (problems[i].op) {
case ADD:
printf("%d + %d = %d\n", problems[i].num1, problems[i].num2, problems[i].answer);
break;
case SUBTRACT:
printf("%d - %d = %d\n", problems[i].num1, problems[i].num2, problems[i].answer);
break;
case MULTIPLY:
printf("%d * %d = %d\n", problems[i].num1, problems[i].num2, problems[i].answer);
break;
case DIVIDE:
printf("%d / %d = %d\n", problems[i].num1, problems[i].num2, problems[i].answer);
break;
}
i--; // 如果用户输入f,则重新显示当前题目
continue;
}
if (input == 'y') {
i--; // 如果用户输入y,则重新做当前题目
continue;
}
if (input == problems[i].answer) {
score++; // 如果用户答对了,得分加1
printf("恭喜你,答对了!\n");
} else {
printf("很遗憾,答错了,正确答案是%d。\n", problems[i].answer);
}
}
printf("答题结束,你的得分是%d分。\n", score);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/bZsb 著作权归作者所有。请勿转载和采集!