×681 2023-11-02 16:26 采纳率: 20%
浏览 7
已结题

用函数去编写小学生辅助系统

img


    1. 任务 1:随机产生 1-10 之间正整数,出乘法问题,直到学生答对为止。 *
    1. 任务 2:在任务 1 基础上,当学生答错时,最多给三次机会。 *
    1. 任务 3:在任务 1 基础上,连做 10 道乘法题,不给机会重做,统计总分、正确率。*
    1. 任务 4:在任务 3 基础上,随机产生 10 道四则运算题,不给机会重做, *
  • 统计总分、正确率。 *
    1. 任务 5:在任务 4 基础上,若回答正确率低于 75%,则再做 10 道题, *
  • 直到正确率高于 75%为止。 *
    1. 退出 *

要求该菜单能反复使用,直到选择“退出”方可结束。
② 至少包括如下函数:
 每个任务封装成一个函数。
 生成随机数函数。
 成绩统计函数(具有统计总分与计算正确率的功能)。
 判断答题是否正确函数。
 对除法运算,判断产生的随机数是否合法。[选作]

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-11-02 19:29
    关注

    【以下回答由 GPT 生成】

    设计和编写小学生辅助系统(C语言)

    这个小学生辅助系统可以通过以下步骤来实现:

    步骤一:生成随机数的函数

    首先需要一个函数来生成1-10之间的随机正整数。

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    
    int generateRandomNumber() {
        srand(time(0)); // 初始化随机数生成器
    
        // 生成1-10之间的随机正整数
        int randomNumber = (rand() % 10) + 1;
    
        return randomNumber;
    }
    

    步骤二:判断答题是否正确的函数

    接下来需要一个函数来判断学生的答案是否正确。

    #include <stdbool.h>
    
    bool isAnswerCorrect(int answer, int correctAnswer) {
        if (answer == correctAnswer) {
            return true;
        } else {
            return false;
        }
    }
    

    步骤三:任务1 - 随机生成乘法问题

    现在可以编写一个函数来实现第一个任务,即随机生成乘法问题并等待学生回答,直到学生答对为止。

    void task1() {
        int x = generateRandomNumber();
        int y = generateRandomNumber();
        int correctAnswer = x * y;
    
        int answer;
        do {
            printf("%d * %d = ", x, y);
            scanf("%d", &answer);
    
            if (isAnswerCorrect(answer, correctAnswer)) {
                printf("回答正确!\n");
            } else {
                printf("回答错误,请继续回答。\n");
            }
        } while (!isAnswerCorrect(answer, correctAnswer));
    }
    

    步骤四:任务2 - 最多给三次机会

    在任务1的基础上,可以修改代码来实现第二个任务,即当学生答错时,最多给三次机会。

    void task2() {
        int x = generateRandomNumber();
        int y = generateRandomNumber();
        int correctAnswer = x * y;
    
        int answer;
        int attempts = 0;
        do {
            printf("%d * %d = ", x, y);
            scanf("%d", &answer);
    
            if (isAnswerCorrect(answer, correctAnswer)) {
                printf("回答正确!\n");
            } else {
                attempts++;
                printf("回答错误,请继续回答。(剩余机会:%d)\n", 3 - attempts);
            }
        } while (!isAnswerCorrect(answer, correctAnswer) && attempts < 3);
    }
    

    步骤五:任务3 - 连做10道乘法题,统计总分和正确率

    在任务1的基础上,可以修改代码来实现第三个任务,即连做10道乘法题,不给机会重做,并统计总分和正确率。

    void task3() {
        int totalScore = 0;
        int correctCount = 0;
    
        for (int i = 0; i < 10; i++) {
            int x = generateRandomNumber();
            int y = generateRandomNumber();
            int correctAnswer = x * y;
    
            int answer;
            printf("%d * %d = ", x, y);
            scanf("%d", &answer);
    
            if (isAnswerCorrect(answer, correctAnswer)) {
                printf("回答正确!\n");
                correctCount++;
                totalScore++;
            } else {
                printf("回答错误!(正确答案:%d)\n", correctAnswer);
            }
        }
    
        float accuracy = (float)correctCount / 10 * 100;
    
        printf("总分:%d\n", totalScore);
        printf("正确率:%.2f%%\n", accuracy);
    }
    

    步骤六:任务4 - 随机产生10道四则运算题,不给机会重做

    接下来可以实现第四个任务,即随机产生10道四则运算题,不给机会重做。

    void task4() {
        int totalScore = 0;
        int correctCount = 0;
    
        for (int i = 0; i < 10; i++) {
            int x = generateRandomNumber();
            int y = generateRandomNumber();
            int operator = generateRandomNumber() % 4; // 0: +, 1: -, 2: *, 3: /
    
            int correctAnswer;
    
            switch (operator) {
                case 0:
                    correctAnswer = x + y;
                    printf("%d + %d = ", x, y);
                    break;
                case 1:
                    correctAnswer = x - y;
                    printf("%d - %d = ", x, y);
                    break;
                case 2:
                    correctAnswer = x * y;
                    printf("%d * %d = ", x, y);
                    break;
                case 3:
                    // 需要判断产生的随机数是否合法,避免除数为0
                    if (y == 0) {
                        i--;
                        continue;
                    }
    
                    correctAnswer = x / y;
                    printf("%d / %d = ", x, y);
                    break;
            }
    
            int answer;
            scanf("%d", &answer);
    
            if (isAnswerCorrect(answer, correctAnswer)) {
                printf("回答正确!\n");
                correctCount++;
                totalScore++;
            } else {
                printf("回答错误!(正确答案:%d)\n", correctAnswer);
            }
        }
    
        float accuracy = (float)correctCount / 10 * 100;
    
        printf("总分:%d\n", totalScore);
        printf("正确率:%.2f%%\n", accuracy);
    }
    

    步骤七:任务5 - 当正确率低于75%时,再做10道题,直到正确率高于75%

    最后可以实现第五个任务,即在任务4的基础上,若回答正确率低于75%,则再做10道题,直到正确率高于75%为止。

    void task5() {
        float accuracy;
    
        do {
            task4();
    
            accuracy = (float)correctCount / 10 * 100;
        } while (accuracy < 75);
    
        printf("正确率已达到75%%以上,任务完成!\n");
    }
    

    步骤八:菜单反复使用直到选择退出

    现在可以编写一个菜单来让用户选择要执行的任务,直到选择退出为止。

    #include <stdio.h>
    
    int main() {
        int choice;
    
        do {
            printf("请选择要执行的任务:\n");
            printf("1. 任务1\n");
            printf("2. 任务2\n");
            printf("3. 任务3\n");
            printf("4. 任务4\n");
            printf("5. 任务5\n");
            printf("6. 退出\n");
            printf("选择:");
            scanf("%d", &choice);
    
            switch (choice) {
                case 1:
                    task1();
                    break;
                case 2:
                    task2();
                    break;
                case 3:
                    task3();
                    break;
                case 4:
                    task4();
                    break;
                case 5:
                    task5();
                    break;
                case 6:
                    printf("程序已退出。\n");
                    break;
                default:
                    printf("无效的选择,请重新选择。\n");
                    break;
            }
        } while (choice != 6);
    
        return 0;
    }
    

    这样就完成了小学生辅助系统的设计和编写。用户可以通过选择菜单来执行不同的任务,包括随机生成乘法问题、最多给三次机会、连做10道乘法题、随机产生10道四则运算题,并统计总分和正确率。如果正确率低于75%,可以再做10道题直到正确率高于75%为止。用户可以选择退出程序。



    【相关推荐】


    • 你可以参考下这个问题的回答, 看看是否对你有帮助, 链接: https://ask.csdn.net/questions/7465015
    • 除此之外, 这篇博客: C语言实现八大排序算法详解及其性能之间的中的 我们老师给我们花了100个星星的重要,那就是非常重要,快速排序。名字就很嚣张。。。言归正传,快排采用了分治算法。把大问题,分解成小问题。首先我们先找一个基准值,基准值的寻找法,有很多,这里我先用一个取边上值得方法,找到基准值以后呢拿着这个基准值和所有数组比较,使这个数组中比基准值小的都放左边,比基准值大的都放到右边,然后就把原来数组分成三块,中间基准值,左边都是比它小的,右边都是比它大的。然后这两个数组,继续分,一直分。直到他的终止条件,也就是小数组有序了就停止,那么什么时候有序停止呢?小区间长度为1或者长度为0的时候,就是有序了。所有小数组都有序了,那么就是整个数组有序了。只是原理,那么问题,又来了,怎么放左放右呢?我目前会三种。 部分也许能够解决你的问题。

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月11日
  • 已采纳回答 11月3日
  • 创建了问题 11月2日