使用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; }

浙公網安備 33010602011771號