服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C# - C#实现简易计算器小功能

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

2022-12-22 14:54rmxob C#

这篇文章主要为大家详细介绍了C#实现简易计算器小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

简易的登陆界面。

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

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

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

音乐是一个练习用的小控件(Listbox),可以选择指定的歌曲播放,直接忽略掉吧。

建立winform窗体

数字和运算符都为button,输入和输出的为textbox

基本代码

在所有button控件的click事件均为加上所对应的文本。
例如:数字1所对应的button就为

?
1
textBox1.Text += '1';

运算符同理

?
1
textBox1.Text += '*';

核心代码

核心代码均在‘=’的click的事件中

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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(); }
        }

所用到的方法(函数)

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
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控件等等。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持服务器之家。

原文链接:https://blog.csdn.net/weixin_43920680/article/details/89003595

延伸 · 阅读

精彩推荐
  • C#C#利用Label标签控件模拟窗体标题的移动及窗体颜色不断变换效果

    C#利用Label标签控件模拟窗体标题的移动及窗体颜色不断变换效果

    Label标签控件相信对大家来说都不陌生,下面这篇文章主要给大家介绍了关于C#利用Label标签控件模拟窗体标题的移动及窗体颜色不断变换效果的相关资料,...

    cnc11562022-02-16
  • C#C#判断字符串是否是int/double(实例)

    C#判断字符串是否是int/double(实例)

    本文主要分享了C#判断字符串是否是int/double的具体实例,具有一定的参考价值,需要的朋友一起来看下吧...

    欣宇10852021-12-16
  • C#C#使用Datatable导出Excel

    C#使用Datatable导出Excel

    这篇文章主要为大家详细介绍了C#使用Datatable导出Excel的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    薛定谔家的猫6462022-03-01
  • C#C#泛型类型知识讲解

    C#泛型类型知识讲解

    这篇文章主要介绍了C#泛型类型知识,文中代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下...

    Tynam Yang10952022-09-09
  • C#C#实现的简单链表类实例

    C#实现的简单链表类实例

    这篇文章主要介绍了C#实现的简单链表类,涉及C#针对链表的定义、实现及链表节点的增加、删除与修改技巧,具有一定参考借鉴价值,需要的朋友可以参考下...

    北风其凉6892021-10-19
  • C#C#实现用栈求逆序的方法示例

    C#实现用栈求逆序的方法示例

    这篇文章主要介绍了C#实现用栈求逆序的方法,涉及C#数据结构中栈的压入与取出相关操作技巧,需要的朋友可以参考下...

    a7719485246442022-01-17
  • C#C# .NET中Socket简单实用框架的使用教程

    C# .NET中Socket简单实用框架的使用教程

    最近一个项目因为要用到Socket传输问题,所以决定学习一下,将自己学习的内容总结分享出来,下面这篇文章主要给大家介绍了关于C# .NET中Socket简单实用框...

    寒空飞箭4182022-01-21
  • C#Unity实现全屏截图以及QQ截图

    Unity实现全屏截图以及QQ截图

    这篇文章主要为大家详细介绍了Unity实现全屏截图以及QQ截图,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    丢丢思密达3872022-09-02