作业要求来自于https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2186
GitHub远程仓库的地址:https://github.com/201606120084
一、题目要求:
像《构建之法》的人物阿超那样,写一个能自动生成小学四则运算题目的命令行 “软件”。
具体要求:任何编程语言都可以,命令行程序接受一个数字输入,然后输出相应数目的四则运算题目和答案。例如输入数字是 30, 那就输出 30 道题目和答案。 运算式子必须至少有两个运算符,运算数字是在 100 之内的正整数,答案不能是负数。 如:
23 - 3 * 4 = 11
扩展要求:
1) 要求能出和真分数 (二分之一, 十二分之五,等)相关的练习题。
2) 并且要求能处理用户的输入,并判断对错,打分统计。 要求能处理用户输入的真分数, 如 1/2, 5/12 等。
初步拟定要实现的功能后,估计一下自己需要花多长时间。编程过程中记录自己实际用了多长时间。
然后和同学们比较一下各自程序的功能、实现方法的异同等等。
写博客纪录自己实现的过程和思路。
二、个人软件过程耗时估计与统计表
PSP2.1 | Personal Software Process Stages | Time Senior Student | Time |
Planning | 计划 | 30min | 90min |
· Estimate | 估计这个任务需要多少时间 | 3h | 50h |
Development | 开发 | 1h | 2h |
· Analysis | 需求分析 (包括学习新技术) |
10min |
12min |
· Design Spec | 生成设计文档 | 0min | 0min |
· Design Review | 设计复审 | 5min | 4min |
· Coding Standard | 代码规范 | 3min | 4min |
· Design | 具体设计 | 20min | 34min |
· Coding | 具体编码 | 1h | 3h |
· Code Review | 代码复审 | 5min | 3min |
· Test | 测试(自我测试,修改代码,提交修改) | 30min | 40min |
Reporting | 报告 | 10min | 15min |
· | 测试报告 | 0min | 0min |
· | 计算工作量 | 2min | 2min |
· | 并提出过程改进计划 | 2min | 2min |
三、部分程序代码
char yunsuanfu() //随机生成运算符函数 { int e; e=rand()%4+1; switch(e){ case 1:return '+'; case 2:return '-'; case 3:return '/'; case 4:return '*'; } }
a=rand()%100+1; //随机生成数字1-100 b=rand()%100+1; //随机生成数字1-100 c=rand()%100+1; //随机生成数字1-100
char e =yunsuanfu(); part1(int a,int b,char e){ float result; switch(e){ case '+': {result=a+b;break;} case '-': { result=a-b;break;} case '*':{ aresult=a*b;break;} case '/':{ result=a/b;break;} } return result; } part2(float result,int c,char e){ float finally; switch(e){ case '+': {finally=result+c;break;} case '-': { finally=result-c;break;} case '*':{ finally=result*c;break;} case '/':{ finally=result/c;break;} } return finally; }
四、设计与结果
五、设计过程分析
这次实验我是用C++这个软件来完成的,这个软件是我大一刚接触计算机专业用的第一个编程软件,通过这次实验复习了很多之前忘记了的旧知识,
也学到了一些新的知识,一开始不懂+ - * / 计算的优先级算法,后面通过自己百度还有问同学就弄明白了这个算法,对浮点数(float)的应用还不是很熟练,
一开始对计算的逻辑关系梳理地还不是很清晰,对约分(四舍五入算法)还不是很懂。