---恢复内容开始---

1.开头

GIT地址 https://github.com/Untrara
GIT用户名 Untrara
学号后五位 31124
博客地址  https://i.cnblogs.com/posts
作业链接  https://www.cnblogs.com/harry240/p/11515697.html

2.作业

(1)因为自己在很早之前就安装过VS2019,我就直接截我VS2019的图来证明我的环境配置完成了吧。

我的GitHub首页

GIt我也之前就安装了,这个地方不再演示安装过程,展示一下黑色窗体

从远程仓库拷贝到本地(我这是第二次拷贝的截图,第一次拷贝忘了截图,第二次拷贝显示文件已经在本地)

(2)代码设计思路

首先声明一个包含四则运算符号的数组

产生一个随机数2或者3,来确保选择的符号个数,是2或者3

接下来分成两个分支,一个符号是2个的时候,一个符号是三个的时候

符号是2的时候,随机从符号数组选取两个符号,存入LIst<String>中,再随机产生三个[1,100]的数

接下来把三个随机数与两个符号用Concat函数拼接成一个四则运算式。形如:2+3-5

得到这个四则运算的字符串之后,用dataTable.Compute对拼接好的四则运算式进行运算(公式本身会先算乘除,再算加减)

这个时候程序初步就完成了,但是由于这个时候没有条件限制,导致输出会有小数和负数,此时需要对结果进行判定

如果结果为负,或者是小数,则舍弃当前的式子,重新开始一轮循环,知道式子的结果不为负,不为小数为止

此时还有最后一个需要注意的地方,就是虽然结果不会出现小数,但是形如:10/20*20的式子在运算中会出现小数。这个时候我的判别条件是这样的,如果符号为负的时候,符号前的数必须大于符号后的数,如果不大于,则同样舍弃当前式子,继续下一轮循环。(以上都是符号为两个,随机数为三个的情况。符号为三个,随机数为四个的情况同理)

总体代码:

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Data;
  4. using System.IO;
  5.  
  6. namespace Calculator
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. StreamWriter sw = new StreamWriter(@"F:\QQPCmgr\Desktop\Calculator\Untrara\Output.txt");
  13. int NumOfSymbol;
  14. DataTable dataTable = new DataTable();
  15. Console.WriteLine("输入一个整数确定四则运算个数,请输入:");
  16. int count = Convert.ToInt32(Console.ReadLine());
  17. String[] symbol = { "+", "-", "*", "/" };
  18. Random r = new Random();
  19.  
  20. Console.SetOut(sw);
  21. for (int j = ; j <= count; j++)
  22. {
  23.  
  24. int num = r.Next(, );
  25. if (num > )
  26. {
  27. NumOfSymbol = ;
  28. int tmp = ;
  29. List<string> list1 = new List<string>();
  30. while (true)
  31. {
  32.  
  33. int NumOfArr = r.Next(,);
  34. string result = symbol[NumOfArr];
  35. list1.Add(result);
  36. tmp++;
  37.  
  38. if (tmp == NumOfSymbol)
  39. {
  40. string a = Convert.ToString(r.Next(, ));
  41. string b = Convert.ToString(r.Next(, ));
  42. string c = Convert.ToString(r.Next(, ));
  43.  
  44. string formula = String.Concat(a, list1[], b, list1[], c);
  45. object test = dataTable.Compute(formula,"");
  46. decimal final = Convert.ToDecimal(test);
  47. int finalNum = Convert.ToInt32(final);
  48. if (final == finalNum && final > )
  49. {
  50. if (list1[].Equals("/") || list1[].Equals("/"))
  51. {
  52. if (Convert.ToInt32(a) < Convert.ToInt32(b) && Convert.ToInt32(b) < Convert.ToInt32(c))
  53. {
  54. tmp = ;
  55. list1.Clear();
  56. }
  57. }
  58. else {
  59. Console.WriteLine(a + list1[] + b + list1[] + c + "=" + final);
  60.  
  61. break;
  62. }
  63.  
  64. }
  65. else {
  66. tmp=;
  67. list1.Clear();
  68. }
  69.  
  70. }
  71. }
  72. }
  73. else
  74. {
  75. NumOfSymbol = ;
  76. int tmp = ;
  77. List<string> list2 = new List<string>();
  78. while (true)
  79. {
  80. int NumOfArr = r.Next(,);
  81. string result = symbol[NumOfArr];
  82. list2.Add(result);
  83. tmp++;
  84. if (tmp == NumOfSymbol)
  85. {
  86. string a = Convert.ToString(r.Next(, ));
  87. string b = Convert.ToString(r.Next(, ));
  88. string c = Convert.ToString(r.Next(, ));
  89. string d = Convert.ToString(r.Next(, ));
  90. string formula = String.Concat(a, list2[], b, list2[], c, list2[], d);
  91. object test = dataTable.Compute(formula, "");
  92. decimal final = Convert.ToDecimal(test);
  93. int finalNum = Convert.ToInt32(final);
  94.  
  95. if (final == finalNum && final > )
  96. {
  97. if (list2[].Equals("/")|| list2[].Equals("/")|| list2[].Equals("/"))
  98. {
  99. if (Convert.ToInt32(a) < Convert.ToInt32(b) || Convert.ToInt32(b) < Convert.ToInt32(c) || Convert.ToInt32(c) < Convert.ToInt32(d))
  100. {
  101. tmp = ;
  102. list2.Clear();
  103. }
  104. }
  105. else
  106. {
  107. Console.WriteLine(a + list2[] + b + list2[] + c + list2[] + d + "=" + final);
  108. break;
  109. }
  110.  
  111. }
  112. else
  113. {
  114. tmp = ;
  115. list2.Clear();
  116. }
  117. }
  118. }
  119. }
  120. }
  121. sw.Flush();
  122. sw.Close();
  123. }
  124. }
  125. }

(3).用git提交代码

提交后结果

四、对项目进行单元测试和回归测试的过程

vs2019测试创建

单元测试:

回归测试,多次输入数字,发现结果均正确:

效能分析,cpu与内存可视图

 五.感想

虽然通过这次的作业收获很多,首先是自己花了一天的时间编写了一个四则运算的程序,在这个过程之中,我是自己编写这个程序,我看到有些人使用了堆栈或者二叉树等数据结构来实现,总的来说还是自己对这些基本的数据结构了解不够深刻,所以想使用的时候总感觉有心无力,以后有空的话,这个程序的实现可以使用二叉树来试一试。在编程的过程中,很多时候以为变量的作用域而出错,经常在修改不同的变量,想来通过这次,发现自己虽然一直在往前学习,但是却基础不牢,实在是不应该,在今后的学习中要更加注意。接下来是使用git和GitHub的使用,这些工具虽然我在之前也安装使用过,如果操作得当,是真的很方便,但是这些工具都需要在日常的使用中一次又一次的使用,才能保证熟练的使用。通过单元测试和回归测试等等,以这次机会了解到了一个类的运行时间,比起之前,更加直观的看到自己写的代码是否高效,在以后的学习工作中,多使用,才能保证自己代码的高效。

---恢复内容结束---

熟练使用Github的更多相关文章

  1. 助教培训第四次作业——熟练掌握GitHub及Git的使用方法

    助教培训第四次作业——熟练掌握GitHub及Git的使用方法 1.Git 命令的理解和使用 常用的Git命令可以查看官方文档,官方文档的网址:https://git-scm.com/docs .虽然是 ...

  2. 熟练掌握GitHub及Git的使用方法

    一.Git 命令的理解和使用 Git是一个快速,可扩展的分布式版本控制系统,具有异常丰富的命令集,可提供高级操作和对内部的完全访问. 分布式:Git版本控制系统是一个分布式的系统,是用来保存工程源代码 ...

  3. 助教培训总结——熟练掌握GitHub及Git的使用方法

    一.Git 命令的理解和使用 1.使用git前需要建立一个本地仓库,用Git GUI Here的话就可以直接选择Create New Repository.Git Bash Here输入 命令git ...

  4. Github使(zhuang)用(bi)指南

    本文针对未能熟练使用GitHub的人员,旨在为其指明通往新世界的小路. 一些闲话可以无视 在这个开源的时代,可能你听说过GitHub,知道大概是个什么.但是,你要是不能熟练的玩起来,怎么和大神取经,怎 ...

  5. 论github客户端的使用与团队协作

    首先:如果你觉得小编写的一般般,那你就默念小编是渣渣,我相信你就会好起来的 -------------------------------------------------------------- ...

  6. gitHub入门指导

    Github可以托管各种git库,并提供一个web界面,但与其它像 SourceForge或Google Code这样的服务不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性.为一个项目贡 ...

  7. 向Github提交代码时遇到的一些问题

    今天分享一下我的一些小经验,那就是向github提交我们的代码.之前一直是直接使用的浏览器完成的代码的下载任务,没有使用过客户端,为了让自己在工作之前熟练使用GitHub,所以就有了下面的这篇博文了. ...

  8. GitHub概述

    1 引言 GitHub是为开发者提供Git仓库的托管服务,是一个让开发者与同事.同学及相同兴趣爱好者共享代码的完美场所. GitHub公司总部位于美国旧金山,拥有一只似章鱼又似猫的吉祥物. GitHu ...

  9. 学习web前端怎样入门?初学者赶紧看过来!

    web前端怎么样才能入门,首先我们要从什么是初级web前端工程师说起: 按照我的想法,我把前端工程师分为了入门.初级.中级.高级这四个级别, 入门级别指的是了解什么是前端(前端到底是什么其实很多人还是 ...

随机推荐

  1. Educational Codeforces Round 40 (Rated for Div. 2) 954G G. Castle Defense

    题 OvO http://codeforces.com/contest/954/problem/G 解 二分答案, 对于每个二分的答案值 ANS,判断这个答案是否可行. 记 s 数组为题目中描述的 a ...

  2. Educational Codeforces Round 74 (Rated for Div. 2)【A,B,C【贪心】,D【正难则反的思想】】

    A. Prime Subtractiontime limit per test2 secondsmemory limit per test256 megabytesinputstandard inpu ...

  3. jQuery.each(object, [callback])

    jQuery.each(object, [callback]) 概述 通用遍历方法,可用于遍历对象和数组.大理石平台检定规程 不同于遍历 jQuery 对象的 $().each() 方法,此方法可用于 ...

  4. Oracle 进程 前台进程-服务进程

    一.什么是服务进程(前台进程) 当用户运行一个应用进程时,系统会为用户运行的应用建立一个用户程序,该进程通过某种方式启动一个服务器进程(前台进程),用于处理连接到该实例的用户进程的请求. 二.服务进程 ...

  5. Windows Storage 驱动开发 葵花宝典 - 翻译

    Roadmap for Developing Windows Storage Drivers Last Updated: 4/20/2017   To create a storage driver, ...

  6. D3D常用数学函数

    D3DXCOLOR* D3DXColorAdd   //两个颜色的组合值D3DXCOLOR* WINAPI D3DXColorAdjustContrast( //调整颜色对比度D3DXCOLOR *p ...

  7. JDK8 新特性 Lambda表达式

    1.java8中Lambda表达式基础语法: (x,y) -> {} 左侧是一个小括号,里面是要实现的抽象方法的参数,有几个参数就写几个参数名,无参可写空括号,无需声明参数类型: 中间是一个jd ...

  8. ubuntu18.04 systemctl

    systemd 是 Linux 下的一款系统和服务管理器,兼容 SysV 和 LSB 的启动脚本.systemd 的特性有:支持并行化任务:同一时候採用 socket 式与 D-Bus 总线式激活服务 ...

  9. APP_DEBUG改成false上线之后发现:“页面错误!请稍后再试~

      TP框架 页面错误!请稍后再试 把APP_DEBUG改成false上线之后发现:"页面错误!请稍后再试-". 问题一般是出在,display() 指定某个具体的模板文件后win ...

  10. web前端——Vue.js基础学习

    近期项目的前端页面准备引入Vue.js,看了网上一些简介,及它和JQuery的对比,发现对于新入门的前端开发来说,Vue 其实也是比较适用的一个框架,其实用性不比JQuery差,感觉还挺有意思,于是研 ...