给出后缀式来求出后缀式表达式的值,后缀式例如:59684/-3+#,因为已给都是一位的正整数,如果不是一位整数就判断是否>=a&&<=z,步骤如下所示: 1.先把数字压入栈中,因为是字符型,注意改类型。 2.区分+ - * / ,来分别进行判断,弹出前两个数字,因为是倒着进的,所以得倒过来计算,比如栈顶第二个-栈顶第一个。 3.再将计算好的数字压入栈中,直到栈中只有栈顶元素,输出栈顶元素。
#include<bits/stdc++.h> using namespace std; stack<int>s; int main() { ios::sync_with_stdio(false); string ch; cin>>ch; for(int i=0;ch[i]!='#';i++){ if(ch[i]>='1'&&ch[i]<='9'){ s.push(ch[i]-'0'); } else{ if(ch[i]=='+'){int t2=s.top();s.pop();int t1=s.top();s.pop();s.push(t1+t2);} else if(ch[i]=='-'){int t2=s.top();s.pop();int t1=s.top();s.pop();s.push(t1-t2);} else if(ch[i]=='*'){int t2=s.top();s.pop();int t1=s.top();s.pop();s.push(t1*t2);} else if(ch[i]=='/'){int t2=s.top();s.pop();int t1=s.top();s.pop();s.push(t1/t2);} } } cout<<s.top()<<endl; return 0; }