源程序代码:
#include <stdio.h> #include <time.h> #include <stdlib.h> #include <string.h> #define OP_MIN 0 #define OP_MAX 3 #define OP_VALUE_MIN 1 #define OP_VALUE_MAX 99 char op_str[4] = {'+', '-', '*', '/'}; unsigned int rand_interval(int max) { return rand() % max; } unsigned int rand_num(int min, int max) { if (min >= max) { return -1; } if (min == 0) { return rand_interval(max); }else { return rand_interval(max - min) + min; } } void main() { int standard_lv[20], standard_rv[20]; char standard_op[20]; int standard_ans[20]; int user_ans[20]; srand(time(NULL)); int i; for (i = 0; i < 20; ++i) { int op_idx = rand_num(OP_MIN, OP_MAX); int lv = rand_num(OP_VALUE_MIN, OP_VALUE_MAX); int rv = rand_num(OP_VALUE_MIN, OP_VALUE_MAX); printf("%d %c %d = ", lv, op_str[op_idx], rv); standard_lv[i] = lv, standard_rv[i] = rv, standard_op[i] = op_str[op_idx]; switch (op_str[op_idx]){ case '+': standard_ans[i] = lv + rv; break; case '-': standard_ans[i] = lv - rv; break; case '*': standard_ans[i] = lv * rv; break; case '/': standard_ans[i] = lv / rv; break; } scanf("%d", user_ans +i); printf("\n"); } for (i = 0; i < 20; ++i) { printf("question %d is %s\n", i, (standard_ans[i]==user_ans[i]?"yes":"no")); } printf("=================================\n"); for (i = 0; i < 20; ++i) { if (standard_ans[i] != user_ans[i]) { printf("%d %c %d = %d\n", standard_lv[i], standard_op[i], standard_rv[i], standard_ans[i]); } } }
运行结果截图: