题目描述
所谓后缀表达式是指这样的一个表达式:式中不再引用括号,运算符号放在两个运算对象之后,所有计算按运算符号出现的顺序,严格地由左而右新进行(不用考虑运算符的优先级)。
如:3*(5–2)+7对应的后缀表达式为:3.5.2.-*7.+@。’@’为表达式的结束符号。‘.’为操作数的结束符号。
输入输出格式
输入格式:输入:后缀表达式
输出格式:输出:表达式的值
输入输出样例
说明
字符串长度,1000内
#include<bits/stdc++.h> using namespace std; char c[100],i=0,top=0; long int stackk[1001],x;//注意后面如果*很多的话可能会越界 int main() { gets(c); while(i<=strlen(c)-2) { while(c[i]!='@') { switch(c[i]) { case'+':stackk[--top]+=stackk[top+1];break; case'-':stackk[--top]-=stackk[top+1];break; case'*':stackk[--top]*=stackk[top+1];break; case'/':stackk[--top]/=stackk[top+1];break; default:x=0; while(c[i]!='.') x=x*10+c[i++]-'0'; stackk[++top]=x;break; } i++; } } cout<<stackk[top]<<endl; return 0; }