用c语言写加减乘除4个自定义函数add,sub,mul,div,在主函数中调用这4个函数去完成以下功能: (1)随机生成5道四则运算题,题目的类型自加,减,乘,除中任意混合出题(即5道题目中有各种类型的题目),每个题目的2个整数是20以内的随机数,题目显示在屏幕上,由用户输入答案(如下图所示)。 (2)程序判断用户输入的答案是否正确,统计答题的正确率。运行结束时,询问是否继续练习,如果回答“Y”则继续进行练习,如果回答“N”则退出练习。 (3)把每次所做的题目和答题的准确率输出在屏幕上,同时也把每次的运行结果保存到result.txt文本文件中。
时间: 2024-04-26 07:24:05 浏览: 146
c程序加减乘除功能的
好的,我理解了你的要求。下面是代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int add(int a, int b) { return a + b; }
int sub(int a, int b) { return a - b; }
int mul(int a, int b) { return a * b; }
int div(int a, int b) { return a / b; }
int main()
{
int num1, num2, result, answer, correct = 0, total = 5;
char op;
srand(time(NULL)); // 设置随机数种子
do {
printf("本次练习共%d题,每题2个20以内的整数,包括加、减、乘、除运算,请输入答案:\n", total);
FILE *fp;
fp = fopen("result.txt", "a"); // 以追加模式打开文件
fprintf(fp, "本次练习共%d题,每题2个20以内的整数,包括加、减、乘、除运算,答题情况如下:\n", total);
for (int i = 1; i <= total; i++) {
num1 = rand() % 20 + 1;
num2 = rand() % 20 + 1;
switch (rand() % 4) {
case 0:
op = '+';
result = add(num1, num2);
break;
case 1:
op = '-';
result = sub(num1, num2);
break;
case 2:
op = '*';
result = mul(num1, num2);
break;
case 3:
op = '/';
result = div(num1, num2);
break;
}
printf("%d %c %d = ", num1, op, num2);
scanf("%d", &answer);
if (answer == result) {
printf("回答正确!\n");
fprintf(fp, "%d %c %d = %d,你的答案:%d,回答正确!\n", num1, op, num2, result, answer);
correct++;
} else {
printf("回答错误!正确答案为%d\n", result);
fprintf(fp, "%d %c %d = %d,你的答案:%d,回答错误!\n", num1, op, num2, result, answer);
}
}
fclose(fp);
printf("本次练习共%d题,你答对了%d题,准确率为%.2f%%\n", total, correct, (float)correct / total * 100);
printf("是否继续练习?(Y/N)\n");
} while (getchar() == 'Y' || getchar() == 'y');
return 0;
}
```
代码步骤说明:
1. 定义了4个自定义函数add、sub、mul、div,分别实现加、减、乘、除运算。
2. 主函数中使用do-while循环来实现反复练习的功能。
3. 循环中先输出本次练习的题目数量和要求,然后打开result.txt文件,准备写入本次练习的结果。
4. 循环中使用for循环来生成5道随机的四则运算题目,随机选择加、减、乘、除运算,每个数是20以内的随机数。将题目显示在屏幕上,用户输入答案,判断答案是否正确,统计答对的数量。
5. 循环结束后,输出本次练习的结果,询问用户是否继续练习。
6. 在每次练习结束后,将答题情况写入到result.txt文件中,并关闭文件。
希望能够满足你的需求,如有疑问,请随时提出。
阅读全文