2026 年秋 C++ 随机数 开发中

C++ 练习题生成器(开发中)

这是我正在开发的第一个 C++ 程序。灵感来自我自己:每天做口算都要妈妈出题,出题的人其实挺无聊的。那不如写个程序,让电脑自动出题、自动对答案!

exercise — 口算小练习 $ ./exercise 5 ===== 口算小练习(共 5 题)===== 第1题 23 + 45 = 68 √ 第2题 81 - 27 = 54 √ 第3题 7 × 8 = 56 √ 第4题 62 - 18 = 43 × 正确答案: 44 第5题 34 + 58 = 92 √ ===== 做完了!答对 4 / 5 题,得分 80 分 ===== 不错不错,错题再算一遍吧。 # 三种题型随机出现:加法 / 减法 / 表内乘法 # 题数跟在命令后面:./exercise 20 就是 20 题

目标功能

核心代码

// 生成一道题:kind 决定题型,题目文本写进 question,返回正确答案
int makeQuestion(int kind, string &question) {
    int a, b, answer;
    if (kind == 0) {                    // 两位数加法
        a = rand() % 90 + 10;
        b = rand() % 90 + 10;
        answer = a + b;
        question = to_string(a) + " + " + to_string(b) + " = ";
    } else if (kind == 1) {             // 减法:保证 b < a,不出负数
        a = rand() % 90 + 10;
        b = rand() % a;
        if (b >= a) b = a - 1;
        answer = a - b;
        question = to_string(a) + " - " + to_string(b) + " = ";
    } else {                            // 表内乘法:1~9
        a = rand() % 9 + 1;
        b = rand() % 9 + 1;
        answer = a * b;
        question = to_string(a) + " × " + to_string(b) + " = ";
    }
    return answer;
}

开发中遇到的问题

  1. 一开始忘了 srand(time(0)),每次运行出的题都一模一样——原来 rand() 只是"假装随机";
  2. rand() % 100 会出 0,但口算题我不想出 0,所以最后加了 + 1;
  3. 批改答案要存用户的输入,20 道题就是 20 个变量……老师说应该用数组,正好这是我下一个要学的知识点。

写这个程序让我第一次觉得:C++ 难,但难的地方正是它厉害的地方。等我学完数组,就把剩下的功能补完。

← 返回作品列表