(1) 博客开头:
GIT地址 |
|
GIT用户名 |
kotofight |
学号后五位 |
62510 |
博客地址 |
|
作业链接 |
(2) 博客内容:
1、环境配置
参考作业指导链接part 1.配置环境内容,用百度网盘下载安装包,安装成功后进行简单的配置就可以使用了。
2、代码设计
题目要求:
阿超家里的孩子上小学一年级了,这个暑假老师给家长们布置了一个作业:家长每天要给孩子出一些合理的,但要有些难度的四则运算题目,并且家长要对孩子的作业打分记录。
作为程序员的阿超心想,既然每天都需要出题,那何不做一个可以自动生成小学四则运算题目与解决题目的命令行 “软件”呢。他把老师的话翻译一下,就形成了这个软件的需求:
- 程序接收一个命令行参数 n,然后随机产生
n
道加减乘除(分别使用符号+-*/
来表示)练习题,每个数字在0
和100
之间,运算符在2
个 到3
个之间。 - 由于阿超的孩子才上一年级,并不知道分数。所以软件所出的练习题在运算过程中不得出现非整数,比如不能出现
3÷5+2=2.6
这样的算式。 - 练习题生成好后,将生成的
n
道练习题及其对应的正确答案输出到一个文件subject.txt
中。
思路:这个题的话,输入就是老师家长们想要的题目的数量n,输出就是n道随机算术题。在这个n道随机算术题中,题目的长度(运算符的个数)是随机的,那么设置一个随机数num来控制,当num取0时,输出一道三个数参与的四则运算,当num取1时,输出一道4个数参与的四则运算。数字也是随机的,用num1——num4来决定,运算符也是随机的,用数组和随机数nums、numm、numn控制。
这个时候会出现负数或者小数以及分母为零的情况,这也是最让人头疼的。想了很多办法去判断,也没有成功,就先用了一个简单的判断来初步实现它。
输出结果:
写入文件结果:
代码:
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.IO; public class Calculator { public static void Main(string[] args) { int n = int.Parse(Console.ReadLine()); char[] s = new char[] { '+', '-', '*', '/' }; char[] w = new char[] { '+', '-', '*', '/' }; char[] p = new char[] { '+', '-', '*', '/' }; string Res = ""; int iSeed = 10; Random ro = new Random(10); long tick = DateTime.Now.Ticks; Random ran = new Random((int)(tick & 0xffffffffL) | (int)(tick >> 32)); Random nums = new Random(); Random num = new Random(); for (int i = 0; i < n; i++) { int Num = num.Next(0,2); int Num1 = ro.Next(0, 100); int Num2 = ro.Next(0, 100); int Num3 = ro.Next(0, 100); int Num4 = ro.Next(0, 100); int Nums = nums.Next(0, 4); int Numm = nums.Next(0, 4); int Numn = nums.Next(0, 4); if (Nums ==3&&Num1%Num2!=0) { if (Num2 == 0) { if (Num1 == 0) { Num2 = Num3; } else { Num2 = Num1; } } Num1 = Num1 - (Num1 % Num2); } if (Numm == 3 && Num2 % Num3 != 0) { if (Num3 == 0) { if (Num2 == 0) { Num3 = Num4; } else { Num3 = Num2; } } Num2 = Num2 - (Num2 % Num3); } if (Numn == 3 && Num3 % Num4 != 0) { if (Num4 == 0) { if (Num3 == 0) { Num4 = 1; } else { Num4 = Num3; } } Num3 = Num3 - (Num3 % Num4); } if (Num == 0) { Console.WriteLine(Num1.ToString() + s[Nums].ToString() + Num2.ToString() + w[Numm].ToString() + Num3.ToString() + "="); Res = Res + Num1.ToString() + s[Nums].ToString() + Num2.ToString() + w[Numm].ToString() + Num3.ToString() + "=" + " "; } else { Console.WriteLine(Num1.ToString() + s[Nums].ToString() + Num2.ToString() + w[Numm].ToString() + Num3.ToString() + p[Numn].ToString() + Num4.ToString() + "="); Res = Res + Num1.ToString() + s[Nums].ToString() + Num2.ToString() + w[Numm].ToString() + Num3.ToString() + p[Numn].ToString() + Num4.ToString() + "=" + " "; } } Console.ReadLine(); System.IO.File.WriteAllText("E:/dreamworld/dreamworld/kotofight/Calculator/Calculator/subject.txt", Res); } }
3、记录你使用github克隆项目以及提交代码的整个过程
4.测试
(1)单元测试
(2)性能分析
5、心得体会
太头大了!c#就大一暑假学过一点点,做这次作业的感觉就是全部忘完了,必须一边打开菜鸟教程一边问同学才能写得下去代码。还有就是单元测试我还是没有搞懂我的代码该怎么测试,下来还需要重新写一下代码,还有就是语言和工具长时间不用也会手生,太难了。这次的学习让我有很多收获吧,就像暑假一样,在短时间内接触很多知识,然后促使自己学习和进步吧。这次的最大的收获就是对于github也有了了解。还有就是自己的代码能力急需加强,看了别人的代码感觉自己so vegetable。