--题目:
- 请编写一个能自动生成小学四则运算题目的软件;
- 让程序能接受用户输入答案,并判定对错;
- 最后给出总共 对/错的数量。
--需求分析:
- 编写小学四则运算的测试系统,该系统能完成100以内的加、减、乘、除运算;
- 该系统能接受用户输入答案,并能自动判断对错;
- 当对用户输入的答案进行判断时,对错误的题目给出正确的答案;
- 在答题结束后,能自动输出用户答的总题数、答对题数、答错题数及所得分数。
--设计:
- 定义num表示系统内的题数,a[10]、b[10]表示自动生成的随机数,c[10]表示通过加、减、乘运算所得结果,d[10]为判断生成试题的运算,s表示通过除法运算所得结果;
- result表示正确答案,add表示答题所得分数;
- e为答错题目的数量,r为答对题目的数量;
- 用一个主函数实现用户的输入,判段正误后系统自动给出正确答案,答题结束后并给出答题总数、答对题数、答错题数及答题所得分数。
--代码实现:
#include<stdlib.h> #include<stdio.h> #include<conio.h> #include<time.h> void main() { int a[10],b[10],d[10],c[10],num=0,result,add=0; double s; int e=0,r=0; printf("欢迎来到小学四则运算测试系统! 请认真完成以下题目! "); char f[5]={'+','-','*','/'}; srand((unsigned)time(NULL)); /* 出10道题 */ while(1) { d[num]=abs(rand())%4;/* 保证出题算法的随机性 */ while(1) /* 保证出题成功 */ { c[num]=-1; a[num]=abs(rand())%100; b[num]=abs(rand())%100; if(d[num]==0) c[num]=a[num]+b[num]; else if(d[num]==1) c[num]=a[num]-b[num]; else if(d[num]==2) c[num]=a[num]*b[num]; else if(d[num]==3) { if(b[num]>0) s=(1.0*a[num]/b[num]); else s=-1; } if(d[num]<=2) { if(c[num]>=0 && c[num]<=100) /* 保证计算结果在0-100之间 */ break; }else { if(a[num]==int(s)*b[num] && s>=0) { c[num]=int(s); break; } } } num++; if(num==10) break; } /* 回答 */ num=0; while(1) { printf("%d %c %d= ",a[num],f[d[num]],b[num]); scanf("%d",&result); if(result==c[num]) { r++; printf("回答正确! "); add+=10; } else{ e++; printf("错误,正确答案: %d ",c[num]); } num++; if(num==10) break; } printf(" 您一共做了%d道题,其中正确的有%d道,错误的有%d道,总分为%d分 ",e+r,r,e,add); printf("答题结束,欢迎您再次光临! "); getch(); }
--测试:
--事后分析和总结:
1、在做题过程中,我意识到自己有很多不足;
2、在写代码时,思路一定要清晰,保持清晰的头脑,才能高效的完成作业;
在这实验中,我意识到自身的不足,在做题时一定要多思考,多分析,多理解;
在做这次题目时,系统出现问题,让我写上去的东西全部消失了,这给了我一个经验,
下次做题时,一定要记得先保存,这样可节约很多时间。
--所耗时间:
项目 | 时间 |
需求分析 | 20分钟 |
设计 | 30分钟 |
代码 | 4.5小时 |
测试 | 10分钟 |
分析和总结 | 20分钟 |