当前位置:文档之家› 科学计算器代码

科学计算器代码

using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Threading.Tasks;using System.Windows.Forms;namespace科学计算器{public partial class Form1 : Form{protected double iNum1,into;protected char cOperator;protected bool bNumBegins;protected bool bDot;protected double iMem;public Form1(){InitializeComponent();InitMembers();}private void InitMembers(){iNum1 = 0.0;cOperator = '=';bNumBegins = true;bDot = false;}private void Numbers_Click(double i){if (txtOutput.Text == "Error"){txtOutput.Text = "0";}try{if (bNumBegins){txtOutput.Text = i.ToString();bNumBegins = false;}else{txtOutput.Text += i.ToString();}double iCurrent = double.Parse(txtOutput.Text);}catch{txtOutput.Text = "Error";InitMembers();return;}}private void Operators_Click(char op){double iCurrent;try{iCurrent = double.Parse(txtOutput.Text);}catch{txtOutput.Text = "Error";InitMembers();return;}double iResult;try{switch(cOperator ){case'+':checked {iResult =iNum1 +iCurrent ;}break;case'-':checked {iResult =iNum1 -iCurrent ;}break;case'*':checked {iResult =iNum1 *iCurrent ;}break;case'/':checked {iResult =iNum1 *iCurrent ;}break;default :iResult = iCurrent;break;}}catch{txtOutput.Text = "Error";InitMembers();return;}txtOutput.Text = iResult.ToString();iNum1 = iResult;bNumBegins = true;bDot = false;cOperator = op;}private void Dot_Click(object sender,EventArgs e) {if (bDot){txtOutput.Text = "Error";InitMembers ();return;}else if (bNumBegins){txtOutput.Text = "0";bNumBegins = false;bDot = true;}elsetxtOutput.Text += '.';bDot = true;}private void btnCancel_Click(object sender,System.EventArgs e){txtOutput.Text = "0";InitMembers();return;}public string dot(int d){string b = "";//判断该数如果小于2,则直接输出if (d < 2){b = d.ToString();}else{int c;int s = 0;int n = d;while (n >= 2){s++;n = n / 2;}int[] m = new int[s];int i = 0;do{c =d / 2;m[i++] = d % 2;d = c;} while (c >= 2);b = d.ToString();for (int j = m.Length - 1; j >= 0; j--){b += m[j].ToString();}}return b;}public string dox(int d){string x = "";if (d < 8){x = d.ToString();}else{int c;int s = 0;int n = d;while (n >= 8){s++;n = n / 8;}int[] m = new int[s];int i = 0;do{c =d / 8;m[i++] = d % 8;d = c;} while (c >= 8);x = d.ToString();for (int j = m.Length - 1; j >= 0; j--){x += m[j];}}return x;}//十进制转十六进制public string doy(int d){string x = "";if (d < 16){x = chang(d);}else{int c;int s = 0;int n = d;while (n >= 16){s++;n = n / 16;}string[] m = new string[s];int i = 0;do{c =d / 16;m[i++] = chang(d % 16);//判断是否大于10,如果大于10,则转换为A~F的格式d = c;}while (c >= 16);x = chang(d);for (int j = m.Length - 1; j >= 0; j--){x += m[j];}}return x;}//判断是否为10~15之间的数,如果是则进行转换public string chang(int d){string x = "";switch (d){case 10:x = "A";break;case 11:x = "B";break;case 12:x = "C";break;case 13:x = "D";break;case 14:x = "E";break;case 15:x = "F";break;default:x = d.ToString();break;}return x;}protected void ResetState(){bNumBegins =true ;cOperator ='=';}[STAThread]private void button1_Click(object sender, EventArgs e) {Numbers_Click(1);}private void button2_Click(object sender, EventArgs e) {Numbers_Click(2);}private void button3_Click(object sender, EventArgs e) {Numbers_Click(3);}private void button4_Click(object sender, EventArgs e) {Numbers_Click(4);}private void button5_Click(object sender, EventArgs e) {Numbers_Click(5);}private void button6_Click(object sender, EventArgs e) {Numbers_Click(6);}private void bttton7_Click(object sender, EventArgs e) {Numbers_Click(7);}private void button8_Click(object sender, EventArgs e) {Numbers_Click(8);}private void button9_Click(object sender, EventArgs e) {Numbers_Click(9);}private void button0_Click(object sender, EventArgs e) {Numbers_Click(0);}private void btnAdd_Click(object sender, EventArgs e) {Operators_Click('+');}private void btnSubstract_Click(object sender, EventArgs e) {Operators_Click('-');}private void btnMultiply_Click(object sender, EventArgs e) {Operators_Click('*');}private void btnDivide_Click(object sender, EventArgs e) {Operators_Click('/');}private void btnEquals_Click(object sender, EventArgs e) {Operators_Click('=');}private void Dot_Click_1(object sender, EventArgs e){if (bDot){txtOutput.Text = "Error";InitMembers();return;}else if (bNumBegins){txtOutput.Text = "0";bNumBegins = false;bDot = true;}elsetxtOutput.Text += '.';bDot = true;}private void btnCancel_Click_1(object sender, EventArgs e) {txtOutput.Text = "0";InitMembers();return;}private void btnMC_Click(object sender, EventArgs e) {iMem = 0;lblMem.Visible = false;ResetState();}private void btnMR_Click(object sender, EventArgs e) {if (lblMem.Visible){txtOutput.Text = iMem.ToString();bNumBegins = true;}}private void btnMS_Click(object sender, EventArgs e){try{iMem = 0;iMem = double.Parse(txtOutput.Text);if (iMem != 0){lblMem.Visible = true;ResetState();}}catch{}}private void btnMAdd_Click(object sender, EventArgs e) {try{checked { iMem += long.Parse(txtOutput.Text); }lblMem.Visible = true;ResetState();}catch{txtOutput.Text = "Error";}}private void btnsin_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = Math.Sin(into).ToString();}private void btncos_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = Math.Cos(into).ToString();}private void btntan_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = Math.Tan(into).ToString();}private void正割_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = (1 / Math.Cos(into)).ToString();}private void余割_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = (1 / Math.Sin(into)).ToString();}private void余切_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);into = into * (Math.PI) / 180;txtOutput.Text = Math.Tan(into).ToString();}private void二进制_Click(object sender, EventArgs e){txtOutput.Text = dot(Convert.ToInt32(txtOutput.Text));//十进制转化为二进制}private void八进制_Click(object sender, EventArgs e){txtOutput.Text = dox(Convert.ToInt32(txtOutput.Text));//十进制转化为八进制}private void十六进制_Click(object sender, EventArgs e){txtOutput.Text = doy(Convert.ToInt32(txtOutput.Text));//十进制转化为十六进制}private void圆周率_Click(object sender, EventArgs e){txtOutput.Text = Math.PI.ToString();}private void btnln_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);txtOutput.Text = Math.Log10(into).ToString();}private void btnlg_Click(object sender, EventArgs e){into = double.Parse(txtOutput.Text);txtOutput.Text = Math.Log(into).ToString();}}}。

相关主题