源代码:
#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]);
}
}
}
#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]);
}
}
}