四则运算练习题生成器

2352836
2352832
算法设计思路
需求分析
生成三百道包含两个运算符的四则运算题
操作数范围一到一百的整数
运算符加减乘除
运算结果范围零到一千
避免除数为零的情况
不显示答案只显示题目

核心算法
随机数生成使用rand函数生成一到一百的随机数
运算符选择从四种运算符中随机选择两个
有效性检查
检查除数是否为零
检查最终结果是否在零到一千范围内
题目生成通过循环生成有效题目直到达到三百道

程序代码

include <stdio.h>

include <stdlib.h>

include <time.h>

include <stdbool.h>

// 生成100以内的随机数
int get_random_number() {
return rand() % 100 + 1; // 1-100
}

// 检查运算结果是否在0-1000范围内
bool is_result_valid(int num1, int num2, char op1, char op2) {
int temp, result;

// 处理第一个运算符
switch(op1) {
    case '+': temp = num1 + num2; break;
    case '-': temp = num1 - num2; break;
    case '*': temp = num1 * num2; break;
    case '/': 
        if (num2 == 0) return false; // 避免除零
        temp = num1 / num2; 
        break;
}

// 处理第二个运算符
int num3 = get_random_number();
switch(op2) {
    case '+': result = temp + num3; break;
    case '-': result = temp - num3; break;
    case '*': result = temp * num3; break;
    case '/': 
        if (num3 == 0) return false; // 避免除零
        result = temp / num3; 
        break;
}

return result >= 0 && result <= 1000;

}

// 生成有效的数学题
void generate_problem(char* problem) {
char operators[] = {'+', '-', '*', '/'};
int num1, num2, num3;
char op1, op2;

do {
    num1 = get_random_number();
    num2 = get_random_number();
    num3 = get_random_number();
    op1 = operators[rand() % 4];
    op2 = operators[rand() % 4];
} while (!is_result_valid(num1, num2, op1, op2));

sprintf(problem, "%d %c %d %c %d", num1, op1, num2, op2, num3);

}

int main() {
srand(time(NULL)); // 初始化随机数种子
int i;
const int total_problems = 300;
const int problems_per_line = 5;

printf("小学四则运算练习题(共%d题)\n\n", total_problems);

for (i = 1; i <= total_problems; i++) {
    char problem[20];
    generate_problem(problem);
    
    printf("%-18s", problem);
    
    if (i % problems_per_line == 0) {
        printf("\n");
    }
}

return 0;

}

结对编程作业体会

在这次结对编程作业中我们共同完成了这个四则运算题目生成器的开发

分工协作
我主要负责算法设计和核心代码实现
搭档负责测试用例设计和边界条件验证
我们通过屏幕共享和实时交流解决遇到的问题

技术收获
加深了对随机数生成和条件判断的理解
学会了如何设计有效性检查算法
掌握了C语言中字符串格式化的技巧

遇到的挑战
最初没有考虑中间结果为负的情况
除法运算的整除条件处理不够完善
输出格式对齐需要多次调整

团队合作经验
定期沟通进度非常重要
代码审查能发现很多潜在问题
结对编程能提高代码质量和开发效率

通过这次项目我们不仅完成了题目要求的功能还学习到了很多实际开发中的经验这对我们今后的编程学习有很大帮助

posted @ 2025-04-11 17:16  2352836  阅读(65)  评论(0)    收藏  举报