题目:实现四则运算的自动生成
要求:1.实现在线答题
2.答题结束之后可以判断对错
3.将错题的结果保存起来
同组人:曹建涛
源程序:
#include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <time.h> int main(void) { int i = 0; int e, f, g, h, x1, x2, y, z;//g为计算值 char fh; int right = 0, wrong = 0; srand((unsigned)time(NULL)); //本地时间为种子 printf("请选择你需要的题目类型\n\n整数运算请输入1 真分数运算请输入2\n"); printf("\n*****整数除法运算结果保留整数*****\n"); printf("\n*****真分数运算结果不约分*****\n"); scanf_s("%d", &x1); printf("请输入出题数量\n"); scanf_s("%d", &x2); FILE* fp; fp = fopen("错题本.txt", "w+"); if (fp == NULL) { printf("fail to open the file\n"); exit(-1); } switch (x1) { case 1: { while (i < x2) { int a = rand() % 100; //产生随机数 int b = rand() % 100; int j; j = rand() % 4; //产生随机符号0到3分别代表四则运算 printf("%d", a); switch (j) { case 0: printf("+"); fh = '+'; g = a + b; break; case 1: printf("-"); fh = '-'; g = a - b; break; case 2: printf("*"); fh = '*'; g = a*b; break; case 3: printf("/"); fh = '/'; g = a / b; break; } printf("%d", b); printf(" = "); scanf_s("%d", &z); if (g == z) { printf("回答正确\n\n"); right++; } else if (g != z) { printf("回答错误\n\n"); fprintf(fp, "%d%c%d=%d\n", a, fh, b, z); wrong++; } i++; } } case 2: { while (i < x2) { int a = rand() % 100; //产生随机数 int b = rand() % 100; int c = rand() % 100; int d = rand() % 100; int j = rand() % 4; //产生随机符号0到3分别代表四则运算 if (b != 0 && d != 0) { if (a > b) { e = a, a = b, b = e; } if (c > d) { f = c, c = d, d = f; } printf("%d/%d", a, b); switch (j) { case 0: printf("+"); fh = '+'; g = a*d + b*c; h = b*d; break; case 1: printf("-"); fh = '-'; g = a*d - b*c; h = b*d; break; case 2: printf("*"); fh = '*'; g = a*c; h = b*d; break; case 3: printf("/"); fh = '/'; g = a*d; h = b*c; break; } printf("%d/%d", c, d); printf("="); scanf_s("%d/%d", &y, &z); if ((g == y) &(h == z)) { printf("回答正确\n\n"); right++; } else if (g != y || h != z) { printf("回答错误\n\n"); fprintf(fp, "%d/%d%c%d/%d=%d/%d\n", a, b, fh, c, d, y, z); wrong++; } i++; } } } } printf("共答对%d题,答错%d题\n", right, wrong); int zdl; zdl = right*100 / (right + wrong); printf("正答率为%d%%", zdl); printf("\n\n*****回答完毕*****"); getchar(); getchar(); fclose(fp); return 0; }
运行结果:
总结:
本次任务中,是在原有作业的基础上进行改进。首先是在线答题,然后是总结对错提述,完成真分数运算,最后是保存错题到txt文件。首先理清思路,先选择需要进行的四则运算题型,真分数还是整数运算。再选择需要的做题数量。再者进行四则运算,同时计算正确与错题数量。最后输出正确与错题数量,并计算正确率。这是个思路较为清晰,也容易思考的程序。但需要一定的耐心完成一个个部分,每一部分看似行云流水但也最容易出现思虑欠缺的问题。在将程序按部分写完,反复修改和查缺补漏后,终于将这个程序呈现出来,也许走了许多弯路或者是还有许多更优的方法,但是会继续学习,不懈努力,将每一个程序编译的愈发完美。