C++ 后缀表达式求值
📋 个人简介
🎉大家好,我是3月份新人榜排名第三的 ༺Blog༒Hacker༻
💬支持我:点赞👍+收藏⭐️+留言📝
🌺格言:༺永做优质༒programmer༻
📣后缀表达式求值
【问题描述】
读入一个后缀表达式(字符串),只含有0-9组成的运算数及
加(+)、减(−)、乘(∗)、除(/,整除)四种运算符,以及空格。
每个运算数之间用一个空格隔开,不需要判断给你的表达式是否合法。以’#'作为结束标志。
保证中间的运算过程不会爆INT
【输入格式】
一行字符,如【题目描述】。
【输出格式】
一个整数,表示表达式的值。
【输入样例】
16 9 4 3 +*-#
【输出样例】
-47
数据规模与约定
表达式长度小于255
💯CODE
#include#includeusing 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;}