看提示感觉这题用int 应该也能AC,但考虑到除法用的double
数据结构实验之栈三:后缀式求值
Time Limit: 1000MS Memory limit: 65536K
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
#include <stdio.h> #include <string.h> double s[1100]; int top; void push(double n); double pop(); int empty(); int main() { double e,t; char c; top=-1; while(~scanf("%c",&c)) { if(c=='#') { while(!empty()) printf("%.lf\n",pop()); break; } if(c>='0'&&c<='9') { push((double)(c-48)); } if(c=='*') { e=pop()*pop(); push(e); } if(c=='+') { e=pop()+pop(); push(e); } if(c=='/') { t=pop(); e=pop()/t; push(e); } if(c=='-') { t=pop(); e=pop()-t; push(e); } } } void push(double n) { //printf(" %lf\n",n); s[++top]=n; } double pop() { return s[top--]; } int empty() { return top==-1; }