2352510 四则运算

一、实验要求
小学老师要每周给同学出300道四则运算练习题。
两个运算符,100 以内的数字,不需要写答案。
需要检查答案是否正确,并且保证答案在 0..1000 之间

二、实验环境
Dev-C++

三、实验步骤
1.生成三个随机数和两个运算符号
2.用户输入回答需判断正确和提示正确答案

四、代码解读
main 主函数:
借助 srand 函数初始化随机数种子。
运用 while 循环生成 300 道符合要求的练习题。
随机生成 100 以内的三个数字以及两个运算符。
调用 calculate 函数计算表达式的正确结果。
alculate 函数:
先计算 num1 和 num2 之间的乘除运算,把结果存于 left_result 变量。
接着依据 op2 运算符计算最终结果。

五、源代码

点击查看代码
#include <iostream>
#include <cstdlib>
#include <ctime>

// 计算表达式的值
double calculate(double num1, char op1, double num2, char op2, double num3) {
    double left, right;
    // 先计算左边的运算
    if (op1 == '+') {
        left = num1 + num2;
    } else if (op1 == '-') {
        left = num1 - num2;
    } else if (op1 == '*') {
        left = num1 * num2;
    } else if (op1 == '/') {
        if (num2 == 0) {
            return -1; // 避免除零错误
        }
        left = num1 / num2;
    }
    // 再计算右边的运算
    if (op2 == '+') {
        right = left + num3;
    } else if (op2 == '-') {
        right = left - num3;
    } else if (op2 == '*') {
        right = left * num3;
    } else if (op2 == '/') {
        if (num3 == 0) {
            return -1; // 避免除零错误
        }
        right = left / num3;
    }
    return right;
}

int main() {
    srand(static_cast<unsigned int>(time(NULL)));
    int count = 0;
    while (count < 300) {
        // 随机生成 100 以内的三个数字
        int num1 = rand() % 100 + 1;
        int num2 = rand() % 100 + 1;
        int num3 = rand() % 100 + 1;
        // 随机选择两个运算符
        char operators[] = {'+', '-', '*', '/'};
        char op1 = operators[rand() % 4];
        char op2 = operators[rand() % 4];

        double result = calculate(num1, op1, num2, op2, num3);
        if (result >= 0 && result <= 1000) {
            std::cout << num1 << " " << op1 << " " << num2 << " " << op2 << " " << num3 << " = ";
            double userAnswer;
            std::cin >> userAnswer;
            if (userAnswer == result) {
                std::cout << "回答正确!" << std::endl;
            } else {
                std::cout << "回答错误,正确答案是 " << result << std::endl;
            }
            count++;
        }
    }
    return 0;
}

六、代码效果 ![](https://img2024.cnblogs.com/blog/3611021/202504/3611021-20250411135758491-1670822079.png)

七、实验体会
起初随机生成运算符号 忽略运算优先级 导致用户算对了 机器判错和提示错误答案

考虑到需编写条件函数判断运算优先级和此代码适配的低龄的儿童 干脆将第一个运算符号规定好乘除 第二个运算符为加减这样从左到右的运算顺序遵循了运算优先级

posted @ 2025-04-11 14:03  xxx17  阅读(43)  评论(0)    收藏  举报