数据结构实验之栈三:后缀式求值
题目描述
对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。
输入
输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。
输出
求该后缀式所对应的算术表达式的值,并输出之。
示例输入
59*684/-3*+#
示例输出
57
提示
基本操作数都是一位正整数!
View Code
1 #include<stdio.h> 2 int main() 3 { 4 int top = 0 ; 5 int s, n[100] ; 6 char c ; 7 while(scanf("%c", &c), c!='#') 8 { 9 if(c>='0'&&c<='9') 10 n[++top] = c - 48 ; 11 else 12 { 13 switch(c) 14 { 15 case'+': s = (n[top-1])+(n[top]) ; break ; 16 case'-': s = (n[top-1])-(n[top]) ; break ; 17 case'*': s = (n[top-1])*(n[top]) ; break ; 18 case'/': s = (n[top-1])/(n[top]) ; break ; 19 } 20 top-- ; 21 n[top] = s ; 22 } 23 } 24 printf("%d\n", n[top]) ; 25 return 0 ; 26 }
注意字符串是不能转换成整数的,单独一个数字字符可以转换为整数。
例如:字符‘0’可以转换成整数 48(十进制)
字符‘1’转换成 49
....
字符‘9’转换成 57
i++先执行 i 在 + 1
++i先 + 1 在执行 i