大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
支持我:点赞+收藏⭐️+留言
格言:༺永做优质༒programmer༻
【问题描述】
读入一个后缀表达式(字符串),只含有0-9组成的运算数及
加(+)、减(−)、乘(∗)、除(/,整除)四种运算符,以及空格。
每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以’#'作为结束标志。
保证中间的运算过程不会爆INT
【输入格式】
一行字符,如【题目描述】。
【输出格式】
一个整数,表示表达式的值。
【输入样例】
16 9 4 3 +*-#
【输出样例】
-47
数据规模与约定
表达式长度小于255
#include
#include
using namespace std;
int stack[260];
int top=0;
int main()
{
char a[260];
cin.getline(a,260);
int i=0,x=0,t1,t2;
while(a[i]!='#')
{
if(a[i]>='0' && a[i]<='9') {
x=0;
while(a[i]>='0' && a[i]<='9')
{
x=x*10+a[i]-'0';
i++;
}
stack[++top]=x;
}
if(a[i]=='+')
{
t1=stack[top--];
t2=stack[top--];
stack[++top]=t1+t2;
}
else if(a[i]=='*')
{
t1=stack[top--];
t2=stack[top--];
stack[++top]=t1*t2;
}
else if(a[i]=='-')
{
t2=stack[top--];
t1=stack[top--];
stack[++top]=t1-t2;
}
else if(a[i]=='/')
{
t2=stack[top--];
t1=stack[top--];
stack[++top]=t1/t2;
}
i++;
}
cout<<stack[top];
return 0;
}