数据结构实验之栈三:后缀式求值

 

题目描述

对于一个基于二元运算符的后缀表示式(基本操作数都是一位正整数),求其代表的算术表达式的值。

输入

输入一个算术表达式的后缀式字符串,以‘#’作为结束标志。

输出

求该后缀式所对应的算术表达式的值,并输出之。

示例输入

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
原文地址:https://www.cnblogs.com/yelan/p/2873689.html