《构建之法》第二次作业——熟悉使用工具

本秂侑毒 提交于 2019-11-30 03:53:39

(1) 博客开头:

GIT地址

 kotofight

GIT用户名

 kotofight

学号后五位

 62510

博客地址

 kotofight

作业链接

 作业要求

(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。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!