c#数学表示法(后缀表示法)详解

C#数学表示法(后缀表示法)详解

什么是后缀表示法

后缀表示法(Reverse Polish notation,RPN),也叫逆波兰表示法(英语:Reverse Polish notation,缩写 RPN),是一种根据运算符的位置来确定运算顺序的数学表示法。与中缀表达式、前缀表达式等表达式一样,它也是一种通用的表示数值和运算符的方法,可用于计算、编程、数据结构等领域。

后缀表示法的示例

下面是一个使用后缀表示法计算表达式的示例:

表达式:3+4*(5-2)

后缀表示法转换流程:

将中缀表达式转换为后缀表达式:

转换过程 运算符栈 后缀表达式
3 进入后缀表达式 3
+ 进入运算符栈 + 3
4 进入后缀表达式 + 3 4
* 进入运算符栈 + * 3 4
(、5、-、2 依次入栈 + - * ( 3 4 5 2 - *
) 弹出运算符栈 + * 3 4 5 2 - * +

计算后缀表达式:3 4 5 2 - * +

先计算5-2,得到3,则后缀表达式变为:3 4 3 * +

再计算4*3,得到12,则后缀表达式变为:3 12 +

最后计算3+12,结果为15。

所以表达式3+4*(5-2)的结果为15。

C#中的后缀表示法

在C#中,后缀表示法通常用于编写数学公式计算程序。下面是一个使用后缀表示法计算表达式的示例:

using System;
using System.Collections.Generic;

namespace RPN
{
    class Program
    {
        static void Main(string[] args)
        {
            Stack<double> stack = new Stack<double>();

            string[] tokens = { "3", "4", "5", "2", "-", "*", "+" };

            foreach (string token in tokens)
            {
                double num;

                if (Double.TryParse(token, out num))
                {
                    stack.Push(num);
                }
                else
                {
                    double op2 = stack.Pop();
                    double op1 = stack.Pop();

                    switch (token)
                    {
                        case "+":
                            stack.Push(op1 + op2);
                            break;
                        case "-":
                            stack.Push(op1 - op2);
                            break;
                        case "*":
                            stack.Push(op1 * op2);
                            break;
                        case "/":
                            stack.Push(op1 / op2);
                            break;
                    }
                }
            }

            Console.WriteLine(stack.Pop());
        }
    }
}

这个程序可以计算后缀表达式3 4 5 2 - * + 的值,并输出结果15。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#数学表示法(后缀表示法)详解 - Python技术站

(0)
上一篇 2023年6月7日
下一篇 2023年6月7日

相关文章

  • C#并行编程Task类用法介绍

    标题:C#并行编程Task类用法介绍 什么是Task类? Task类是C#并行编程中最重要的类之一,它可以用来表示一个异步操作或者一组异步操作,并且可以方便地实现并行编程。 如何使用Task类? 使用Task类有以下几个基本步骤: 步骤一:定义异步任务 需要定义一个表示异步任务的委托,例如: Func<int, int> computeDeleg…

    C# 2023年5月15日
    00
  • C# 读写XML(代码分享)

    下面是关于“C# 读写XML(代码分享)”的详细攻略: C# 读写XML(代码分享) 在C#中,我们可以使用XML(可扩展标记语言)来存储和传输数据。XML是一种文本格式,类似于HTML,但被用来存储和传输数据,而不是描述网页。在C#中,我们可以使用System.XML命名空间下的类来读写XML文件。 创建XML文件 我们可以使用System.XML命名空间…

    C# 2023年6月7日
    00
  • C#中Lambda表达式的三种写法

    下面我将为你讲解C#中Lambda表达式的三种写法的完整攻略。 1. 简单Lambda表达式 在C#中,我们可以使用Lambda表达式来简化匿名方法的编写。Lambda表达式有三个部分组成:参数列表、箭头(Lambda符号)和Lambda方法体,在下面的例子中,我们使用Lambda表达式实现了一个简单的加法方法: int Add(int a, int b) …

    C# 2023年6月1日
    00
  • C# 读取指定路径配置文件的方法

    下面是关于“C# 读取指定路径配置文件的方法”的完整攻略: 第一步:准备配置文件 在C#中,我们可以通过配置文件来保存程序运行时所需的参数和配置信息。配置文件一般采用XML格式,以提高数据的可读性和可维护性。 示例配置文件的内容如下: <?xml version="1.0" encoding="utf-8" ?&…

    C# 2023年6月1日
    00
  • visual studio 2019正式版安装简单教程

    Visual Studio 2019是微软推出的一款集成开发环境,它支持多种编程语言和平台,包括.NET框架、C++、Python、JavaScript等。本文将提供Visual Studio 2019正式版安装的简单教程,帮助您快速安装和配置Visual Studio 2019。 安装Visual Studio 2019 以下是安装Visual Studi…

    C# 2023年5月15日
    00
  • C#中Datetimepicker出现问题的解决方法

    C# 中的 DateTimePicker 是一个常用的日期选择控件,但有时用户在操作时会出现一些问题,本文将介绍如何解决这些问题。 问题一:日期选择后无法正确显示 有时候用户会发现在 DateTimePicker 中选择的日期和实际显示的日期不一致,甚至会显示错误的日期。这通常是因为 DateTimePicker 控件的 Value 属性被修改了。为了解决这…

    C# 2023年5月15日
    00
  • 如何将asp.net core程序部署到Linux服务器

    将ASP.NET Core程序部署到Linux服务器需要以下步骤: 在Linux服务器上安装.NET Core运行时环境和ASP.NET Core运行时环境。 在Linux服务器上安装Web服务器,如Nginx或Apache。 将ASP.NET Core程序发布为自包的执行文件或Docker容器。 配置Web服务器以反向代理到ASP.NET Core程序。 …

    C# 2023年5月12日
    00
  • C#垃圾回收机制的详细介绍

    C#是一种托管式语言,这意味着它带有自己的垃圾回收机制,可以帮助程序员管理内存。以下是C#中垃圾回收机制的详细介绍: 什么是垃圾回收? 在程序执行期间,每次分配内存时,都需要在堆上分配内存,当不再使用该内存时,需要将其释放并还回给操作系统。垃圾回收是一种内存管理机制,在没有明确指定释放内存的情况下,自动释放不再使用的内存。 C#中的垃圾回收机制 C#的垃圾回…

    C# 2023年6月8日
    00
合作推广
合作推广
分享本页
返回顶部