中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現簡易計算器小功能

發布時間:2022-02-08 09:37:46 來源:億速云 閱讀:174 作者:小新 欄目:開發技術

這篇文章主要介紹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#如何實現簡易計算器小功能”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

遂昌县| 咸丰县| 滦平县| 革吉县| 翁牛特旗| 西藏| 拉萨市| 左贡县| 咸丰县| 宁都县| 古交市| 沾益县| 和龙市| 盐津县| 鄂尔多斯市| 留坝县| 鹿泉市| 章丘市| 邵东县| 都兰县| 印江| 巍山| 绥阳县| 财经| 那曲县| 连平县| 昌乐县| 虞城县| 瑞安市| 蛟河市| 天津市| 丽江市| 安溪县| 桃园县| 郧西县| 岚皋县| 乌兰察布市| 鄂温| 烟台市| 芦山县| 阳泉市|