GIT地址 | https://github.com/qq546419996 |
GIT用户名 | qq546419996 |
学号后五位 | 62212 |
博客地址 | https://www.cnblogs.com/Nauthiz/ |
作业链接 | 第二次-熟练使用工具 |
Part 0. 背景
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:
- 程序接收一个命令行参数 n,然后随机产生
n
道加减乘除(分别使用符号+-*/
来表示)练习题,每个数字在0
和100
之间,运算符在2
个 到3
个之间。 - 由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现
3÷5+2=2.6
这样的算式。 - 练习题生成好后,将生成的
n
道练习题及其对应的正确答案输出到一个文件subject.txt
中。 -
当程序接收的参数为4时,以下为一个输出文件示例。
13+17-1=29 11*15-5=160 3+10+4-16=1 15÷5+3-2=4
这次阿超选择使用他最拿手的 C++
语言来完成这样的需求,工欲善其事必先利其器,第一步就需要先安装一个好用的 IDE ,在这里我们推荐使用 Visual Studio 2017
Part 1. 配置环境
因为上学期的面向对象程序设计(c#)课程中已安装vs2017,环境配置已完成,此处省略。
Part 2. 克隆项目
注册账号和克隆项目时遇到的最大问题是全是英文。
Part 3.代码设计
一开始设计的思路是用随机数一二三四来对运算符+-x / 进行选择,用随机数零到一确定是否有第四个数字参与运算,并且
将答案用文本文档的形式打印出来。
实际写出来的代码只能使用于这种情况,而且代码量重复累余。用这个方法来完成作业实在是因为自己编写代码能力太弱,而且
因为个人能力和时间因素,是否有第四个数的计算也没有写出来。
1 public static void Main(string[] args) 2 { 3 var seed = Guid.NewGuid().GetHashCode(); 4 Console.Write("请输入要生成的题数:"); 5 int n = int.Parse(Console.ReadLine()); 6 Random rd = new Random(seed);//避免随机数相同 7 for (int i = 1; i <= n; i++) 8 { 9 int Nodi= 3;//参与计算的数字个数 10 int[] num = new int[Nodi]; 11 for (int j = 0; j < Nodi; j++) 12 { 13 num[j] = rd.Next(0, 101); 14 } 15 int Maths = rd.Next(1, 5);//用随机数一到四来确定运算符 16 int sum = calf(Maths, num); 17 int symbol = rd.Next(1, 5); 18 cals(symbol, Maths, num, sum); 19 } 20 Console.ReadKey(); 21 }
public static int calf(int M, int[] num)//前两个数的运算
public static int cals(int S, int M, int[] num, int sum)//第三个数字参与运算
在运行的过程中出现了随机数全部相同的问题,在查询资料之后解决了这个问题(资料来源:https://www.cnblogs.com/programsky/p/5408697.html)
运行效果:
Part 4.单元测试
右键创建单元测试
Part 5.断点测试
Part 6.效能分析
Part 7.上传代码
Part 8.总结
这次的作业磕磕绊绊的也算是勉强完成了,再一次感受到了代码是程序员的立身之本这个事实,构思然后完成代码的过程废了很多心思,在写完之后看到别人的优秀代码
羡慕之余更坚定了自己要努力补上代码功课的决心。同时认识了一些自己之前没用过的vs功能和git这个东西。在使用git的时候,因为面对一个全新的东西,使用的时候错
误不断发生,考询问同学和百度查询才完成了任务,自己离成为一个程序员的距离还很远。