背景
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:
- 程序接收一个命令行参数 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
。
配置环境
因为上过c#专业课,vs2017环境已经配置,此处省略。
克隆项目
代码设计
从控制台读取一个数字n,表示生成n个算式,调用Pro1开始生成算式
Pro1的构造函数,调用表示开始执行代码命令生成算式
建立一个结构体,用于储存算式,x,y,z表示运算数字,a,b表示运算符号,sm表示运算结果
这两个函数用于计算算式的值,Com用于单次计算,Sum用于计算算式最后答案
Judge函数用于判断生成的算式是否合法,是则返回true否则返回false
随机生成算式,并调用Judge函数判断算式是否合法,不合法继续执行生成新算式,合法返回一个Node值表示该算式
该函数用于输出运算符号,因为我对运算符号有int值1,2,3,4表示,输出时因转化成对应运算符号
构造函数调用的函数,用于接收n,并开始执行生成n个算式,生成算式后输出打印到txt文件中
运行结果
单元测试
断点测试
效能分析
提交代码
总结
通过这次作业学到了一些关于github工具的用法,同时也发现了自己把c#很多知识点都给忘记了,还好通过这次作业重新复习了一遍,并且提升了我的c#代码实现能力,在我编写代码的时候因为我用的是1,2,3,4来代替加减乘除,我在写判定算式是否合法的函数的时候写了一句if(k.a==‘4’),就是因为这一句让我dbug花费了两天的时间,最后还以一个函数一个函数的慢慢调试在发现了错误,在找到错误之前我根本没有想过会在这里出问题,这个错误让我深刻的认识到编程时必须细心,在程序出bug的找不出问题时候应该考虑自己是否犯了简单的错误。总之,这次作业对我而言收益良多。