zoukankan      html  css  js  c++  java
  • 计算表达式值

    试题描述

    后缀表达式是指运算符放在两个运算对象之后,所有计算按运算符出现的顺序,严格地从左到右进行。注意每个操作数之后都紧跟着一个“.”。
    如:3×(5-2)+7对应的后缀表达式为3.5.2.-*7.+。
    输入一个后缀表达式,求表达式的值。
    注意本题中只出现+、-、*三种运算符。

    输入
    一行,一个后缀表达式。
    输出
    一行,一个整数,表示后缀表达式的值。
    输入示例
    3.5.2.-*7.+
    输出示例
    16
    其他说明
    表达式长度不超过50,所有操作数的值以及所有中间运算结果以及最终结果的绝对值均不超过10^6。

    C程序:

    #include<cstdio>
    #include<cstdlib>
    #include<cmath>
    #include<iostream> 
    using namespace std;
    int st[51];
    int top;
    void push(int ch){top++;st[top]=ch;}
    void pop(){top--;}
    void clear(){top=0;}
    int main()
    {
        char s[51];
        cin>>s;
        int ch=0; 
        for(int i=0;i<strlen(s);i++)
        {
            if(s[i]=='.')
            {
                 push(ch);
                 ch=0;
            }
            else if(s[i]=='+')
            {
                int temp=st[top]+st[top-1];
                pop();pop();
                push(temp);
            }
            else if(s[i]=='-')
            {
                int temp=st[top-1]-st[top];
                pop();pop();
                push(temp);
            }
            else if(s[i]=='*')
            {
                int temp=st[top]*st[top-1];
                pop();pop();
                push(temp);
            }
            else ch=ch*10+(s[i]-'0');
        }
        printf("%d",st[top]);
        return 0;
    }
  • 相关阅读:
    析构函数中的virtual是否必要?
    程序员必看的书
    UML类图几种关系的总结
    VS 2008的64位编译环境的安装和使用
    VB获取CAD属性值
    30分钟LINQ教程
    ADO.NET
    C#编写Windows服务程序图文教程
    Json的序列化与反序列化以及乱入的k_BackingField
    C#中的委托(Delegate)和事件(Event)
  • 原文地址:https://www.cnblogs.com/WHYFRANK/p/4717696.html
Copyright © 2011-2022 走看看