任务要求:使用C或Java语言完成一个自动生成四则运算试题的程序。软件基本功能如下。
(1)自动生成10道100以内的2个操作数的四则运算算式(+ - * /),要求运算结果也在100以内
(2)剔除重复算式。 2 + 3 = 和 2 + 3 = 是重复算式 2 + 3 = 和 3 + 2 = 不属于重复算式
(3)题目数量可定制
(4)相关参数可控制
是否包含乘法和除法
操作数数值范围可控(如操作数 在100以内 还是1000以内)
操作数是否含负数
(5)生成的运算题存储到外部文件result.txt中
一. 需求分析
为应对小学生对于四则运算熟悉练习的掌握度,减轻出题员的负担,故设计一款程序能自动编写四则运算里的题目。
二. 功能设计
基本功能
能自动生成算数式
算数式符号随机生成
扩展功能
对生成的算数式能够自动计算并且给出算数答案
算数式可以控制是否存在负数
算数式可以控制是否存在乘除表达式
生成的最后结果会保存在result.txt文件中方便查看
算数式可以控制其操作范围
三. 设计实现
C语言
引用库
引用库
引用库
计算负数时乘以2然后减去自身得出值
fopen函数来储存输出值
四. 测试运行
测试运行结果在控制台里面与在文本输出里面的表现
五. 代码片段
rand()用来生成随机值,使用它来获取n的值,就可以对下面的op赋值并计算相对应的算式。
for(a=0;a)
{
i=rand()%z+1;
j=rand()%z+1;
n=rand()%4;if(n==0){op='+'; q=i+j;}if(n==1){op='-'; q=i-j;}if(n==2){op='*'; q=i*j;}if(n==3){op='/'; q=i/j;}
printf("%d%c%d=%d\n",i,op,j,q);
fprintf(fp,"%d%c%d=%d\n",i,op,j,q);
}
如果想生成负数那么就对其上限乘以2然后在减去自身就是想要的答案。
i=rand()%(2*z)-z+1;
j=rand()%(2*z)-z+1;
n=rand()%2;if(n==0){op='+'; q=i+j;}if(n==1){op='-'; q=i-j;}
六. 总结
自己写的if判断语句有点多,而且我写注释的习惯不好造成我自己有时候都看不明白自己写的东西,不过经过这一次的经验与训练,相信下一次我定能在原有基础上做到更好。
七. PSP
PSP
任务内容
计划共完成需要的时间(min)
实际完成需要的时间(min)
Planning
计划
8
6
Estimate
估计这个任务需要多少时间,并规划大致工作步骤
8
6
Development
开发
66
64
Analysis
需求分析 (包括学习新技术)
6
10
Design
具体设计
10
12
Coding
具体编码
40
30
Test
测试(自我测试,修改代码,提交修改)
10
12
Reporting
报告
3
3
Postmortem & Process Improvement Plan
事后总结 ,并提出过程改进计划
3
3