第四次作业:小学四则运算“软件”之初版

作业要求来自于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)的应用还不是很熟练,

一开始对计算的逻辑关系梳理地还不是很清晰,对约分(四舍五入算法)还不是很懂。

 

 

 

 

 

 

原文地址:https://www.cnblogs.com/lb2016/p/9789680.html