C++ 练习题生成器(开发中)
这是我正在开发的第一个 C++ 程序。灵感来自我自己:每天做口算都要妈妈出题,出题的人其实挺无聊的。那不如写个程序,让电脑自动出题、自动对答案!
目标功能
- ✅ 已实现:加法、减法、表内乘法三种题型随机混合出题;
- ✅ 已实现:做完后自动批改,算出答对题数和得分;
- ✅ 已实现:题数跟在命令后面(
./exercise 20),不填默认 10 题; - 🔲 计划中:难度选择(一位数 / 两位数 / 带括号);
- 🔲 计划中:错题单独记到文件里,方便第二天重做。
核心代码
// 生成一道题: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;
}
开发中遇到的问题
- 一开始忘了
srand(time(0)),每次运行出的题都一模一样——原来 rand() 只是"假装随机"; rand() % 100会出 0,但口算题我不想出 0,所以最后加了+ 1;- 批改答案要存用户的输入,20 道题就是 20 个变量……老师说应该用数组,正好这是我下一个要学的知识点。
写这个程序让我第一次觉得:C++ 难,但难的地方正是它厉害的地方。等我学完数组,就把剩下的功能补完。