C#实现简易计算器小功能
程序员文章站
2022-03-01 13:32:14
本文实例为大家分享了c#实现简易计算器小功能的具体代码,供大家参考,具体内容如下简易的登陆界面。具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括号的运算。音乐是一个练习...
本文实例为大家分享了c#实现简易计算器小功能的具体代码,供大家参考,具体内容如下
简易的登陆界面。
具有幻灯片效果。(picturebox time控件)
计算器支持多位数,小数,括号的运算。
音乐是一个练习用的小控件(listbox),可以选择指定的歌曲播放,直接忽略掉吧。
建立winform窗体
数字和运算符都为button,输入和输出的为textbox
基本代码
在所有button控件的click事件均为加上所对应的文本。
例如:数字1所对应的button就为
textbox1.text += '1';
运算符同理
textbox1.text += '*';
核心代码
核心代码均在‘=’的click的事件中
stack<double> vs = new stack<double>();//运算符栈 stack<char> vvs = new stack<char>();//操作符栈 string a = textbox1.text + '='; string b = ""; vvs.push('='); for (int i = 0; i < a.length; i++) { if (a[i] >= '0' && a[i] <= '9'||a[i]=='.') { b += a[i]; } else if (a[i] == '=') { if (b != "") vs.push(convert.todouble(b)); while (vvs.peek() != '=') { char t = vvs.pop(); double d = vs.pop(); if (vs.count() != 0) { double j = vs.pop(); vs.push(jisuan(d, t, j)); } else { messagebox.show("你输入的有问题"); textbox1.text = ""; } } } else { if (b != "") vs.push(convert.todouble(b)); switch (bijiao(vvs.peek(), a[i])) { case '>': while (vvs.count != 1 && vvs.peek() != '(') { char th = vvs.pop(); double f = vs.pop(); double g = vs.pop(); vs.push(jisuan(f, th, g)); } if (vvs.peek() == '(' && a[i] == ')') { vvs.pop(); } else { vvs.push(a[i]); } break; case '<': vvs.push(a[i]); break; case '=': while (vvs.peek() != '=') { char th = vvs.pop(); double f = vs.pop(); double g = vs.pop(); vs.push(jisuan(f, th, g)); } break; } b = ""; } } textbox1.text = ""; if(vs.count()!=0) { textbox1.text = vs.peek().tostring(); } }
所用到的方法(函数)
public double jisuan(double c, char t, double a)//用来计算的方法 { switch (t) { case '+': return a + c; case '-': return a - c; case '*': return a * c; case '/': if (c == 0) { messagebox.show("0不能作为被除数"); return 0; } else return a / c; case '%': return a % c; default: return 0; } } char bijiao(char theta1, char theta2)//比较运算符优先级的方法 { if ((theta1 == '(' && theta2 == ')') || (theta1 == '#' && theta2 == '#')) { return '='; } else if (theta1 == '(' || theta1 == '#' || theta2 == '(' || (theta1 == '+' || theta1 == '-') && (theta2 == '*' || theta2 == '/')) { return '<'; } else return '>'; }
为了使计算器更加美观,可以添加picturebox控件等等。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
上一篇: 关于C#中GUI编程的标准事件问题
下一篇: C#实现简单的计算器小功能