您的位置:首页 > 其它

《软件工程》第二次作业

2015-04-10 22:00 176 查看
--题目:

请编写一个能自动生成小学四则运算题目的软件;

让程序能接受用户输入答案,并判定对错;

最后给出总共 对/错的数量。

--需求分析:

编写小学四则运算的测试系统,该系统能完成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("欢迎来到小学四则运算测试系统!\n请认真完成以下题目!\n\n");
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("回答正确!\n");
add+=10;
}
else{
e++;
printf("错误,正确答案: %d\n",c[num]);
}
num++;
if(num==10)
break;
}
printf("\n您一共做了%d道题,其中正确的有%d道,错误的有%d道,总分为%d分\n",e+r,r,e,add);
printf("答题结束,欢迎您再次光临!\n");
getch();
}


--测试:



--事后分析和总结:

1、在做题过程中,我意识到自己有很多不足;

2、在写代码时,思路一定要清晰,保持清晰的头脑,才能高效的完成作业;

在这实验中,我意识到自身的不足,在做题时一定要多思考,多分析,多理解;

在做这次题目时,系统出现问题,让我写上去的东西全部消失了,这给了我一个经验,

下次做题时,一定要记得先保存,这样可节约很多时间。

--所耗时间:

项目时间
需求分析20分钟
设计30分钟
代码4.5小时
测试10分钟
分析和总结20分钟
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: