使用c语言开发并测试了四则运算出题系统
该系统使用时间随机运算符号和数字,将其整除100取余数得到100以内的运算数字.
同时检查运算数字保证答案不会出现负数和浮点数
最后计算正确率
以下为代码具体实现和运算结果
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

// 函数声明
void generateQuestion(int *countCorrect, int *countTotal);
float calculateAccuracy(int countCorrect, int countTotal);

int main()
{
int countCorrect = 0, countTotal = 0;
char exitChar;

while (1) { printf("输入 'e' 退出或输入任意符号继续...\n"); scanf(" %c", &exitChar); // 注意前面的空格,用于忽略之前的换行符 if (exitChar == 'e') { break; } generateQuestion(&countCorrect, &countTotal); }

float accuracy = calculateAccuracy(countCorrect, countTotal);
printf("您的正确率为: %.2f%%\n", accuracy);

return 0;
}

// 出题函数
void generateQuestion(int *countCorrect, int *countTotal)
{
int num1, num2, result, userAnswer;
char operators[] = {'+', '-', '*', '/'};
char selectedOperator;

num1 = rand() % 100 + 1;
num2 = rand() % 100 + 1;
selectedOperator = operators[rand() % 4];

// 确保不会出现负数或非整数除法
if (selectedOperator == '-' && num2 > num1) { int temp = num1; num1 = num2; num2 = temp; }
else if (selectedOperator == '/' && num1 % num2 != 0) { num1 = num1 - (num1 % num2); }

// 计算结果
switch (selectedOperator)
{
case '+': result = num1 + num2; break;
case '-': result = num1 - num2; break;
case '*': result = num1 * num2; break;
case '/': result = num1 / num2; break;
}

// 输出题目并获取用户答案
printf("请计算题目: %d %c %d = ?\n", num1, selectedOperator, num2);
scanf("%d", &userAnswer);

// 判断答案是否正确
if (userAnswer == result) { printf("回答正确!\n"); (*countCorrect)++; }
else { printf("回答错误. 正确答案是 %d.\n", result); }
(*countTotal)++;
}

// 计算正确率函数
float calculateAccuracy(int countCorrect, int countTotal) { return (float)countCorrect / countTotal * 100; }