欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#实现简易计算器小功能

程序员文章站 2022-03-01 13:32:14
本文实例为大家分享了c#实现简易计算器小功能的具体代码,供大家参考,具体内容如下简易的登陆界面。具有幻灯片效果。(picturebox time控件)计算器支持多位数,小数,括号的运算。音乐是一个练习...

本文实例为大家分享了c#实现简易计算器小功能的具体代码,供大家参考,具体内容如下

简易的登陆界面。

C#实现简易计算器小功能

具有幻灯片效果。(picturebox time控件)
计算器支持多位数,小数,括号的运算。

C#实现简易计算器小功能

音乐是一个练习用的小控件(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# 计算器