#include <bits/stdc++.h>
using namespace std;
//后缀表达式
stack<int> n;
int s, x, y;
/**
.是每个数字的结束标志
@是整个表达式的结束标志
测试用例 :
3.5.2.-*7.+@ 3*(5–2)+7 16
*/
int main() {
char ch;
do { //(1)上来就读入,读完了再看是不是结束符,就是干了再说~
ch = getchar(); //(2)读入字符的办法
if (ch >= '0' && ch <= '9') s = s * 10 + ch - '0'; //(3)按字符读入转为数字的办法
else if (ch == '.') //表示数字结束
n.push(s), s = 0; //入栈,重新计数
else if (ch != '@') { //操作符
x = n.top();
n.pop();
y = n.top();
n.pop();
switch (ch) {
case '+':
n.push(y + x);
break;
case '-':
n.push(y - x); //注意顺序
break;
case '*':
n.push(y * x);
break;
case '/':
n.push(y / x); //注意顺序
break;
}
}
} while (ch != '@');
printf("%d\n", n.top());
return 0;
}
P1449 后缀表达式题解
原创
©著作权归作者所有:来自51CTO博客作者superhuanghai的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:P1160 队列安排题解
下一篇:P1825 玉米田迷宫题解
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
cron表达式详细讲解
cron表达式简介
cron表达式 -
中缀表达式转逆波兰表达式(后缀表达式)
编写程序,将任意一个合法的中缀表达式转换成逆波兰
运算符 中缀表达式 优先级