用C#实现简易的计算机
2021/12/10 1:16:46
本文主要是介绍用C#实现简易的计算机,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
嗯,有点简陋。
数据通常在控制台中以文本输入,所以要先把字符串转换为数值。(你用控件就不用换了......)
可以用Parse和TryParse来将字符串转为数值,它们的区别为1.如果Parse方法不可以转换此字符串就会报错例如double a=double.Parse("a");2.TryParse方法如果遇到不能转换的字符串就会返回false。如下代码:
public static void Changeover()//把字符串转为数据 { if (double.TryParse(a, out a1)) { if (double.TryParse(b, out a2)) { } } }
注意一定要带out关键字
静态与整个类相关,静态方法不用类的实例调用可以直接调用,但不能访问实例成员(没有static限定符的都是实例成员),如果想对一个静态的字段访问要用类名如:A.a=3;
解决完转换后便是提供基础的+-*/的方法了
public void add() { Changeover(); WriteLine($"相加结果为{a1 += a2}"); } public void Subtracts() { Changeover(); WriteLine($"相减结果为{a1 -= a2}"); } public void times() { Changeover(); WriteLine($"相乘结果为{a1 *= a2}"); } public void divide() { WriteLine($"相乘结果为{a1 /= a2}"); }
为了日后可以扩展或重写就把它们创立为方法,其实每个方法都应改加上virtual以方便日后继承
为了有可读性顺便加上阶乘和乘法表
public double Factorials(double value) { if (value == 0||value==1) { return 1; } return value *= Factorials(value - 1); } public double Table(double value) { for(double i = 0; i <= 10; i++) { double a = value; WriteLine(a*= i); } return 0; }
阶乘运用了一种叫递归的方法,但递归有时会导致内存溢出,因为每次调用都会存储处理数据。
迭代是一种更好的方法,虽然不那么简易
完整代码:
using System; using static System.Console; class A { static string a = ReadLine(); static string enter = ReadLine(); static string b = ReadLine(); static double a1; static double a2; public static void Changeover()//把字符串转为数据 { if (double.TryParse(a, out a1)) { if (double.TryParse(b, out a2)) { } } } public void add() { Changeover(); WriteLine($"相加结果为{a1 += a2}"); } public void Subtracts() { Changeover(); WriteLine($"相减结果为{a1 -= a2}"); } public void times() { Changeover(); WriteLine($"相乘结果为{a1 *= a2}"); } public void divide() { WriteLine($"相乘结果为{a1 /= a2}"); } public double Factorials(double value) { if (value == 0||value==1) { return 1; } return value *= Factorials(value - 1); } public double Table(double value) { for(double i = 0; i <= 10; i++) { double a = value; WriteLine(a*= i); } return 0; } public static void Main(string[] vs) { var z = new A(); WriteLine("请输入一个值并输入你想进行的操作之后再次输入一个数"); WriteLine("+为进行加法操作,-为进行减法操作,*为乘法操作,/为除法操作,!为阶乘,table为你输入的值的乘法表"); if (enter == "+") { z.add(); } else if (enter == "-") { z.Subtracts(); } else if(enter=="*") { z.times(); } else if(enter=="/") { z.divide(); } else if(enter=="!") { Changeover(); WriteLine($"结果为{z.Factorials(a1)}"); } else if (enter == "table") { Changeover(); z.Table(a1); } ReadLine(); } }
小干货第2期:
你可以用#define预编译来提供给编译器一个符号,而#if在收到符号时才执行所包含的语句
#undef来删除符号
下期再见......
这篇关于用C#实现简易的计算机的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2022-03-01沐雪多租宝商城源码从.NetCore3.1升级到.Net6的步骤
- 2024-11-18微软研究:RAG系统的四个层次提升理解与回答能力
- 2024-11-15C#中怎么从PEM格式的证书中提取公钥?-icode9专业技术文章分享
- 2024-11-14云架构设计——如何用diagrams.net绘制专业的AWS架构图?
- 2024-05-08首个适配Visual Studio平台的国产智能编程助手CodeGeeX正式上线!C#程序员必备效率神器!
- 2024-03-30C#设计模式之十六迭代器模式(Iterator Pattern)【行为型】
- 2024-03-29c# datetime tryparse
- 2024-02-21list find index c#
- 2024-01-24convert toint32 c#
- 2024-01-24Advanced .Net Debugging 1:你必须知道的调试工具