该计算器程序支持二进制、八进制、十进制之间的互相转换,同时也支持二进制、八进制、十进制的计算。但是需要注意的是:程序可能存在着些许错误,请体谅笔者的水平。笔者提供了程序的完整文件,包括程序源代码。 本程序提供了“面向对象”和“面向过程”两种设计思路。
去博客设置页面,选择一款你喜欢的代码片高亮样式,下面展示同样高亮的 代码片.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace MyCalculator { public class Calculator { //进制类型的枚举 public enum _bases { bin = 2, oct = 8, dec = 10 } //标志当前运算进制,默认为十进制 public _bases _currentBase = _bases.dec; //运算符的枚举 public enum _operators { add = 1, subtract = 2, multiply = 3, divide = 4} //运算符默认为“+” public _operators _operator = _operators.add; //进行各种进制下的各种运算 public string calculate(string num1, string num2) { string result; //如果是二进制 if(_currentBase == _bases.bin) { if (_operator == _operators.add) result = BinAdd(num1, num2); else if (_operator == _operators.subtract) result = BinSubtract(num1, num2); else if (_operator == _operators.multiply) result = BinMultiply(num1, num2); else result = BinDivide(num1, num2); } //如果是八进制 else if (_currentBase == _bases.oct) { if (_operator == _operators.add) result = OctAdd(num1, num2); else if (_operator == _operators.subtract) result = OctSubtract(num1, num2); else if (_operator == _operators.multiply) result = OctMultiply(num1, num2); else result = OctDivide(num1, num2); } //如果是十进制 else { if (_operator == _operators.add) result = DecAdd(num1, num2); else if (_operator == _operators.subtract) result = DecSubtract(num1, num2); else if (_operator == _operators.multiply) result = DecMultiply(num1, num2); else result = DecDivide(num1, num2); } return result; } //二进制转八进制 public string BinToOct(string bin) { string oct; oct = Convert.ToString(Convert.ToInt32(bin, 2), 8); return oct; } //二进制转十进制 public string BinToDec(string bin) { string dec; dec = Convert.ToInt32(bin, 2).ToString(); return dec; } //八进制转二进制 public string OctToBin(string oct) { string bin; bin = Convert.ToString(Convert.ToInt32(oct, 8), 2); return bin; } //八进制转十进制 public string OctToDec(string oct) { string dec; dec = Convert.ToInt32(oct, 8).ToString(); return dec; } //十进制转二进制 public string DecToBin(string dec) { string bin; bin = Convert.ToString(Convert.ToInt32(dec), 2); return bin; } //十进制转八进制 public string DecToOct(string dec) { string oct; oct = Convert.ToString(Convert.ToInt32(dec), 8); return oct; } //二进制加法 public string BinAdd(string num1, string num2) { string result; string num1Dec = BinToDec(num1); string num2Dec = BinToDec(num2); result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec))); return result; } //二进制减法 public string BinSubtract(string num1, string num2) { string result; string num1Dec = BinToDec(num1); string num2Dec = BinToDec(num2); result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec))); return result; } //二进制乘法 public string BinMultiply(string num1, string num2) { string result; string num1Dec = BinToDec(num1); string num2Dec = BinToDec(num2); result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec))); return result; } //二进制除法 public string BinDivide(string num1, string num2) { string result; string num1Dec = BinToDec(num1); string num2Dec = BinToDec(num2); result = DecToBin(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec))); return result; } //八进制加法 public string OctAdd(string num1, string num2) { string result; string num1Dec = OctToDec(num1); string num2Dec = OctToDec(num2); result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) + Convert.ToInt32(num2Dec))); return result; } //八进制减法 public string OctSubtract(string num1, string num2) { string result; string num1Dec = OctToDec(num1); string num2Dec = OctToDec(num2); result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) - Convert.ToInt32(num2Dec))); return result; } //八进制乘法 public string OctMultiply(string num1, string num2) { string result; string num1Dec = OctToDec(num1); string num2Dec = OctToDec(num2); result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) * Convert.ToInt32(num2Dec))); return result; } //八进制除法 public string OctDivide(string num1, string num2) { string result; string num1Dec = OctToDec(num1); string num2Dec = OctToDec(num2); result = DecToOct(Convert.ToString(Convert.ToInt32(num1Dec) / Convert.ToInt32(num2Dec))); return result; } //十进制加法 public string DecAdd(string num1, string num2) { string result; decimal num1Dec = Convert.ToDecimal(num1); decimal num2Dec = Convert.ToDecimal(num2); result = Convert.ToString(num1Dec + num2Dec); return result; } //十进制减法 public string DecSubtract(string num1, string num2) { string result; decimal num1Dec = Convert.ToDecimal(num1); decimal num2Dec = Convert.ToDecimal(num2); result = Convert.ToString(num1Dec - num2Dec); return result; } //十进制乘法 public string DecMultiply(string num1, string num2) { string result; decimal num1Dec = Convert.ToDecimal(num1); decimal num2Dec = Convert.ToDecimal(num2); result = Convert.ToString(num1Dec * num2Dec); return result; } //十进制除法 public string DecDivide(string num1, string num2) { string result; decimal num1Dec = Convert.ToDecimal(num1); decimal num2Dec = Convert.ToDecimal(num2); result = Convert.ToString(num1Dec / num2Dec); return result; } } }计算器