用c语言编写一个练习算术的小程序。编写加、减、乘、除4个自定义函数:jia(),jian(),cheng(),chu(),在主函数中调用这4个函数去完成以下功能: (1)随机生成5道四则运算题,题目的类型由加、减、乘、除中任意类型混合出题(即5道题目中有各种类型的题目),每道题目的两个整数是20以内的随机数,题目显示在屏幕上,由用户输入答案(如下图所示)。 (2)程序判断用户输入的答案是否正确,统计答题的正确率,并将每次的答题正确率保存到result.txt文本文件中。运行结束时,询问是否继续练习,如果回答“Y”则继续进行练习,如果回答“N”则退出练习。
时间: 2024-04-07 07:32:33 浏览: 64
好,我可以帮你解答这个问题。下面是这个程序的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int jia(int a, int b);
int jian(int a, int b);
int cheng(int a, int b);
int chu(int a, int b);
int main()
{
int a, b, result, answer, correct = 0, i;
char op;
float rate;
srand(time(NULL)); // 设置随机数种子
do {
printf("\n开始练习!\n");
for (i = 1; i <= 5; i++) {
a = rand() % 20 + 1; // 生成1-20之间的随机数
b = rand() % 20 + 1;
switch(rand() % 4) { // 随机选择加、减、乘、除
case 0: op = '+'; result = jia(a, b); break;
case 1: op = '-'; result = jian(a, b); break;
case 2: op = '*'; result = cheng(a, b); break;
case 3: op = '/'; result = chu(a, b); break;
}
printf("第%d题: %d %c %d = ", i, a, op, b);
scanf("%d", &answer);
if (answer == result) {
printf("回答正确!\n");
correct++;
} else {
printf("回答错误!正确答案为%d\n", result);
}
}
rate = (float)correct / 5 * 100;
printf("本次练习,共答对%d题,正确率为%.2f%%\n", correct, rate);
FILE *fp = fopen("result.txt", "a"); // 打开或创建文件
if (fp == NULL) {
printf("保存结果失败!\n");
} else {
fprintf(fp, "本次练习,共答对%d题,正确率为%.2f%%\n", correct, rate);
fclose(fp); // 关闭文件
}
correct = 0; // 清零计数器
printf("是否继续练习?(Y/N)");
fflush(stdin); // 清空输入缓冲区
scanf("%c", &op);
} while (op == 'Y' || op == 'y');
printf("欢迎再次使用!\n");
return 0;
}
int jia(int a, int b)
{
return a + b;
}
int jian(int a, int b)
{
return a - b;
}
int cheng(int a, int b)
{
return a * b;
}
int chu(int a, int b)
{
while (b == 0) b = rand() % 20 + 1; // 避免除数为0
return a / b;
}
```
程序中定义了4个自定义函数:jia(),jian(),cheng(),chu(),分别用于实现加法、减法、乘法、除法运算。在主函数中,使用循环生成5道题目,并随机选择题目类型和题目中的两个数字,然后提示用户输入答案并进行判断,最后统计答对的题目数和正确率,并将结果保存到文件中。程序运行结束时,询问用户是否继续练习,如果回答“Y”则继续,否则退出程序。
阅读全文