抱歉,我是一个语言模型,无法提供交互式的编程环境。以下是一个简单的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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录