补发一篇计算后缀表达式,便于查看。
#include<iostream>
#include<stack>
using namespace std;
int main()
{
char s[100];
int temp,result,a,b,i;
stack<int> sk;
while(cin.getline(s,100))
{
for(i=0;s[i]!='\0';i++)
{
if(s[i]>='0'&&s[i]<='9')//遇到数字即组建出来并压栈
{
temp=0;
while(s[i]>='0'&&s[i]<='9')
{
temp=temp*10+(s[i])-'0';
i++;
}
sk.push(temp);
}
else
{
if(s[i]!=' ')//遇到运算符
{
a=sk.top();
sk.pop();
b=sk.top();
sk.pop();
switch(s[i])
{
case '+':result=b+a;break;
case '-':result=b-a;break;
case '*':result=b*a;break;
case '/':result=b/a;break;
}
sk.push(result);
}
}
}
cout<<sk.top()<<endl;
sk.pop();
}
return 0;
}