zoukankan      html  css  js  c++  java
  • ACM -- 算法小结(六)逆波兰表达式

    •  逆波兰表达式
    //问题描述:逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2+3的
    //逆波兰表达式法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必
    //用括号改变运算次序。例如(2+3)*4的逆波兰表达式法为*+2 3 4.本题求解逆波兰表
    //达式的值,其中运算符包括+、-、*、/ 四个。
    //输入数据:输入为一行其中运算符和运算数之间都用空格分隔,运算数都是浮点数。
    //输出要求:输出为一行,即表达式的值。
    //输入样例:* + 11.0 12.0 + 24.0 35.0
    //输出样例:1357.000000
    
    //在递归函数中,针对当前的输入有5种情况:
    //输入的是常数,则表达式的值就是这个常数
    //输入的是'+',则表达式的值是继续读入两个表达式并计算出它们的值,然后把它们
    //的值相加.(输入'*','-','/'的情况一样)。
    
    
    #include<stdio.h>
    #include<math.h>
    double exp()
    {
        char a[10];
        scanf("%s",a);//scanf输入语句遇到空格就会停止输入
        switch(a[0])
        {
            case'+':return exp()+exp();
                           case'-':return exp()-exp();
            case'*':return exp()*exp();
            case'/':return exp()/exp();
            default:return atof(a);//atof函数:将字符串转换为浮点型数据        
        }
    }
    int main()
    {
        double ans;
        ans=exp();
        printf("%f
    ",ans);
        return 0;
    }
  • 相关阅读:
    阅读 图解HTTP ,读书笔记
    javascript 红宝书笔记之操作日期
    设计模式之抽象工厂模式
    设计模式之工厂方法模式
    数据库知识点③
    设计模式之装饰者模式
    设计模式之观察者模式
    心理控制方法——阅读Notes
    使用PL/SQL编写存储过程访问数据库
    《认知盈余》——阅读感受与体会
  • 原文地址:https://www.cnblogs.com/lmei/p/3340692.html
Copyright © 2011-2022 走看看