结对编程

组队成员:2352530李博航 2352524丁杰鑫
设计思路:
随机生成数字和运算符,使用 rand() 生成 3个数字(num1, num2, num3),使用 rand() 生成 2个运算符(op1, op2),运算符可以是 +, -, *, /,如果运算符是 /,调整数字使其能整除(如 10 / 2 而不是 10 / 3)。然后计算正确结果,先计算 num1 op1 num2,再计算 (结果) op2 num3,确保最终结果 0 ≤ result ≤ 1000,否则重新生成题目。最后用户输入答案并判断对错,输出题目,等待用户输入答案,比较用户答案和正确结果,给出反馈,防止除数为 0:由于 num2 和 num3 最小是 1,不会出现除 0 错误。
源代码:

include <stdio.h>

include <stdlib.h>

include <time.h>

int main() {
int i, num1, num2, num3, op1, op2, result, answer;
char ops[4] = {'+', '-', '*', '/'};
srand(time(NULL));
for (i = 1; i <= 20; i++) {
num1 = rand() % 100 + 1;
num2 = rand() % 100 + 1;
num3 = rand() % 100 + 1;// 随机生成三个100以内的数字

    op1 = rand() % 4;
    op2 = rand() % 4;       // 随机生成两个运算符

if (op1 == 3 && num1 % num2 != 0) {
    num1 = num2 * (rand() % 10 + 1); 

}
if (op2 == 3 && num2 % num3 != 0) {
num2 = num3 * (rand() % 10 + 1);
}// 确保除法能整除

switch(op1) {
    case 0: result = num1 + num2; break;
    case 1: result = num1 - num2; break;
    case 2: result = num1 * num2; break;
    case 3: result = num1 / num2; break;

}
switch(op2) {
case 0: result = result + num3; break;
case 1: result = result - num3; break;
case 2: result = result * num3; break;
case 3: result = result / num3; break;
}
if (result < 0 || result > 1000) {
i--;
continue;
}//若结果在0-1000之间,重新生成这道题

printf("题目%d: %d %c %d %c %d = ", i, num1, ops[op1], num2, ops[op2], num3);
scanf("%d", &answer);   

// 题目的打印显示

if (answer == result) {
    printf("正确!\n");

} // 检查答案
else {
printf("错误!正确答案是:%d\n", result);
}
}
return 0;
}
运行结果实例:

posted @ 2025-04-25 09:01  JJaymes  阅读(7)  评论(0)    收藏  举报