随机给出100道100以内的四则运算试题(加减乘除)

题目描述

随机产生俩个数,随机产生运算符,依据运算符输出对应的表达式,用户输入答案,系统判断用户的正确性,同时统计所有题目中的加法减法乘法除法题目的数量,并统计相关各类的运算率.

案例代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main() {
    int num1, num2, answer, userAnswer;
    char operator;
    int additionCount = 0, subtractionCount = 0, multiplicationCount = 0, divisionCount = 0;
    int additionCorrect = 0, subtractionCorrect = 0, multiplicationCorrect = 0, divisionCorrect = 0;
    
    srand(time(NULL)); // 设置随机数种子
    
    for (int i = 0; i < 10; i++) {
        // 随机生成两个数字和运算符
        num1 = rand() % 100 + 1;
        num2 = rand() % 100 + 1;
        int operatorIndex = rand() % 4;
        
        switch (operatorIndex) {
            case 0:
                operator = '+';
                additionCount++;
                answer = num1 + num2;
                break;
            case 1:
                operator = '-';
                subtractionCount++;
                answer = num1 - num2;
                break;
            case 2:
                operator = '*';
                multiplicationCount++;
                answer = num1 * num2;
                break;
            case 3:
                operator = '/';
                divisionCount++;
                // 避免除法出现小数
                num1 = num2 * (rand() % 10 + 1);
                answer = num1 / num2;
                break;
        }
        
        printf("题目 %d: %d %c %d = ", i+1, num1, operator, num2);
        scanf("%d", &userAnswer);
        
        if (userAnswer == answer) {
            printf("回答正确!\n");
            switch (operatorIndex) {
                case 0:
                    additionCorrect++;
                    break;
                case 1:
                    subtractionCorrect++;
                    break;
                case 2:
                    multiplicationCorrect++;
                    break;
                case 3:
                    divisionCorrect++;
                    break;
            }
        } else {
            printf("回答错误!正确答案是:%d\n", answer);
        }
    }
    
    // 输出统计结果
    printf("\n加法题目数量:%d,正确率:%.2f%%\n", additionCount, (float) additionCorrect / additionCount * 100);
    printf("减法题目数量:%d,正确率:%.2f%%\n", subtractionCount, (float) subtractionCorrect / subtractionCount * 100);
    printf("乘法题目数量:%d,正确率:%.2f%%\n", multiplicationCount, (float) multiplicationCorrect / multiplicationCount * 100);
    printf("除法题目数量:%d,正确率:%.2f%%\n", divisionCount, (float) divisionCorrect / divisionCount * 100);
    
    return 0;
}

在这个程序中,我们使用了rand()函数来生成随机数,并使用srand(time(NULL))来设置随机种子,以确保每次运行时都有不同的随机数序列。

通过for循环生成10个算术题目。我们使用rand() % 100 + 1来生成1到100之间的随机数。然后,通过rand() % 4生成0到3之间的随机数,用于选择运算符。根据运算符的不同,我们执行相应的运算并计算出正确答案。

接下来,使用printf输出题目,并使用scanf获取用户输入的答案。根据用户的回答,判断答案是否正确,并统计各类题目的数量和正确率。

最后,使用printf输出加法、减法、乘法、除法题目的数量和正确率。

注意:此程序仅作为示例,没有进行错误处理和边界检查。在实际应用中,可能需要添加额外的逻辑以确保程序的稳定性和正确性。

© 版权声明
THE END
喜欢就支持一下吧
点赞11赞赏 分享