若栈S1中保存整数,栈S2中保存运算符,函数F( )依次执行下述各步操作: (1)从S1中依次弹出两个操作数a和b; (2)从S2中弹出一个运算符op; (3)执行相应的运算b op a; (4)将运算结果压入S1中。 假定S1中

admin2019-08-17  76

问题 若栈S1中保存整数,栈S2中保存运算符,函数F(          )依次执行下述各步操作:  
(1)从S1中依次弹出两个操作数a和b;  
(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

答案B

解析 第一次调用:①从S1中弹出2和3;②从S2中弹出+:③执行3+2=5:④将5压入S1中。第一次调用结束后S1中剩余5,8,5(5在栈项),S2中剩余*-(-在栈项)。第二次调用:①从S1中弹出5和8;②从S2中弹出-:③执行8-5=3;④将3压入S1中,第二次调用结束后S1中剩余5,3(3在栈顶),S2中剩余*。第三次调用:①从S1中弹出3和5;②从S2中弹出*:③执行5×3=15;④将15压入S1中,第三次调用结束后S1中仅剩余15(栈项)。S2为空。故选B。
转载请注明原文地址:https://kaotiyun.com/show/A7Ci777K
0

相关试题推荐
最新回复(0)