一个练习算术的小程序。编写加、减、乘、除4个自定义函数:jia(),jian(),cheng(),chu(),在主函数中调用这4个函数去完成以下功能: (1)随机生成5道四则运算题,题目的类型由加、减、乘、除中任意类型混合出题(即5道题目中有各种类型的题目),每道题目的两个整数是20以内的随机数,题目显示在屏幕上,由用户输入答案(如下图所示)。 (2)程序判断用户输入的答案是否正确,统计答题的正确率,并将每次的答题正确率保存到result.txt文本文件中。运行结束时,询问是否继续练习,如果回答“Y”则继续进行练习,如果回答“N”则退出练习。 c语言
时间: 2024-03-14 19:45:49 浏览: 339
算术题测试程序 (能随机出题, 题数由用户输入确定, 算术题包括加减乘除四则运算, 表达式项数应不限, 可以包含括号)
5星 · 资源好评率100%
好的,下面是针对你的问题的代码实现:
```
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
//加法函数
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) {
if (b == 0) { //分母不能为0
printf("分母不能为0,请重新输入!\n");
return -1;
} else {
return a / b;
}
}
int main() {
int i, a, b, c, d, ans, count = 0, right = 0; //count表示总题数,right表示答对的题目数
char flag = 'Y'; //是否继续练习的标志
srand((unsigned) time(NULL)); //设置随机数种子
while (flag == 'Y') { //循环练习
for (i = 0; i < 5; i++) { //生成5道题目
a = rand() % 20 + 1; //随机生成1~20之间的整数
b = rand() % 20 + 1;
c = rand() % 4; //随机生成0~3之间的整数,用于确定题目类型
printf("第%d题:", i + 1);
switch (c) { //根据随机数确定题目类型
case 0:
printf("%d + %d = ", a, b);
ans = jia(a, b);
break;
case 1:
printf("%d - %d = ", a, b);
ans = jian(a, b);
break;
case 2:
printf("%d * %d = ", a, b);
ans = cheng(a, b);
break;
case 3:
printf("%d / %d = ", a, b);
ans = chu(a, b);
if (ans == -1) { //如果除法出错,则跳过本次循环
i--;
continue;
}
break;
}
scanf("%d", &d); //输入答案
if (d == ans) { //判断答案是否正确
printf("恭喜你,答对了!\n");
right++;
} else {
printf("很遗憾,答错了!正确答案是%d\n", ans);
}
count++; //总题数加1
}
printf("你本次练习的正确率为%.2f%%\n", (float) right / count * 100);
FILE* fp; //定义文件指针
fp = fopen("result.txt", "a"); //以追加方式打开文件,如果文件不存在则创建文件
fprintf(fp, "%.2f%%\n", (float) right / count * 100); //将正确率写入文件
fclose(fp); //关闭文件
printf("是否继续练习?(Y/N)");
getchar(); //用于吃掉输入缓存区中的回车
scanf("%c", &flag); //输入是否继续练习的标志
}
printf("欢迎下次再来练习!\n");
return 0;
}
```
这个程序中,我们定义了四个自定义函数:jia()、jian()、cheng()、chu(),分别对应加、减、乘、除四种运算类型。主函数中通过调用这四个函数,生成5道随机的四则运算题目,并将用户输入的答案与正确答案进行比较,最后统计答对的题目数以及正确率,并将每次的正确率保存到result.txt文本文件中。程序运行结束后,会询问是否继续练习,如果回答“Y”则继续进行练习,如果回答“N”则退出练习。
阅读全文