#include<stdio.h>
#include<stack>
using namespace std;
stack<int> s;
//考虑多位数字 空格分割
int main()
{
char str[100]={"2 3 * 5 4 * + 9 -"};
int i=0;
int flag=0,temp=0;
for(;str[i];i++)
{
if(str[i]=='+'||str[i]=='-'||str[i]=='*'||str[i]=='/')//操作符
{
int p=0,q=0,val=0;
p=s.top();
s.pop();
q=s.top();
s.pop();
switch(str[i])
{
case '+':
val=p+q;
break;
case '-':
val=q-p;
break;
case '*':
val=p*q;
break;
case '/':
val=q/p;
break;
}
//printf("val=%d\n",val);
s.push(val);
}
else if(str[i]==' ')//空格
{
if(flag==1)
{
s.push(temp);
//printf("temp=%d\n",temp);
}
temp=0;
flag=0;
}
else if(str[i]<='9'&&str[i]>='0')//数字
{
temp=temp*10+str[i]-'0';
flag=1;
}
}
printf("%d",s.top());
}
//答案为17
后缀表达式的运算(C语言)
于 2022-01-22 20:35:05 首次发布