题18

题目

[!question]+
【2018 统考真题】若栈 中保存整数,栈 中保存运算符,函数 依次执行下述各步操作:

  1. S1 中依次弹出两个操作数 ab .
  2. S2 中弹出一个运算符 op.
  3. 执行相应的运算 b op a .
  4. 将运算结果压入 S1 中.

假定 S1 中的操作数依次是 5, 8, 3, 2 (2 在栈顶), S2 中的运算符依次是 *、-、+ (+ 在栈顶). 调用 3 次 F() 后, S1 栈顶保存的值是 ( ).

A. -15
B. 15
C. -20
D. 20

分析

[!NOTE]+
第一次调用:
①从s1中弹出2和3;
②从s2中弹出+;
③执行3+2=5;
④将5压入s1中,第一次调用结束后s1中剩余(5在栈顶),s2中剩余*、-(-在栈顶)。
第二次调用:①从s1中弹出5和8;②从s2中弹出-;③执行8-5=3;④将3压入s1中,第二次调用结束后中剩余5、3(3在栈顶),中剩余*
第三次调用:①从中弹出3和5;②从中弹出*;③执行;④将15压入s1中,第三次调用结束后s1中仅剩余15,s2为空。

[!done]+
B