问题 K: 后缀表达式求值

137 阅读1分钟

输入一行表示后缀表达式,数与数之间一定有空格隔开(可能不只一个空格),最后输入@表示输入结束。
数据保证每一步的计算结果均为不超过100000的整数



#include<iostream>

#include<cstdio>

using namespace std;
long long stk[10];
int main(){
	
        
	long long i=0,now=0;
	char op;
	while((op=getchar())!='@'){
		if(op>='0'&&op<='9'){
			now=now*10;
			now=now+op-'0';//允许多位数的存在&&字符转数字
		}else if(op==' '&&now!=0){//空格出现即为一个数值输入结束
			stk[++i]=now;//把接受的数值从下标1开始存入数组
			now=0;//重置数字
                        //遇到运算符就开始计算
		}else if(op=='+'){
			stk[i-1]=stk[i-1]+stk[i];
			i--;
		}else if(op=='-'){
			stk[i-1]=stk[i-1]-stk[i];
			i--;
		}else if(op=='*'){
			stk[i-1]=stk[i-1]*stk[i];
			i--;
		}else if(op=='/'){
			stk[i-1]=stk[i-1]/stk[i];
			i--;
		}
	}
	printf("%d",stk[1]);//输出数组下标为1的数值
	return 0;
}