逆波兰表达式

举报
ReCclay 发表于 2022/02/23 00:33:26 2022/02/23
6.9k+ 0 0
【摘要】 逆波兰表达式 逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表达式为 + 2 3 逆波兰表达式的优点是运算符不必有优先级关系,也不必用括号改变运算次序, 例如(2+3...

逆波兰表达式

逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表达式为 + 2 3
逆波兰表达式的优点是运算符不必有优先级关系,也不必用括号改变运算次序,
例如(2+3)4 3的逆波兰表达式为 + 2 3 4 本题中求逆波兰表达式的值,其中运算符包括 + - * /四个

输入

输入一行,其中运算符和运算数之间用空格隔开

输出

输出为一行表达式的值

逆波兰表达式的定义:
1.一个数就是一个逆波兰表达式,这个数就是逆波兰表达式本身 //相当于一个终止条件
2.“运算符 逆波兰表达式 逆波兰表达式” 是逆波兰表达式,值为两个逆波兰表达式运算出的结果
// 逆波兰表达式本身就是一个递归

#include <iostream>
#include <cmath>
#include <cstdio>
#include <cstdlib>
using namespace std;

double Exp()
{
    char s[100];
    cin >> s;
    switch(s[0])
    {
        case '+': return Exp()+Exp();
        case '-': return Exp()-Exp();
        case '*': return Exp()*Exp();
        case '/': return Exp()/Exp();
        default: return atof(s);
        break;
    }
}
int main()
{
    printf("%.2f", Exp());
    return 0;
}
  
 

文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。

原文链接:recclay.blog.csdn.net/article/details/60764313

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。