问答题
阅读下列算法说明和流程图,将应填入(n)处的字句写在对应栏内。
【算法说明】
本算法按照算符优先关系,实现对算术四则混合运算表达式(可含小括号)的求值。处理对象是以字符串形式给出的、语法正确且不含变量的整数表达式。
算符优先关系见表5.1(§1,§2为按顺序出现的两个运算符)
{{B}} 表5.1{{/B}}
§1,§2
+
-
+
-
*
/
(
)
#
  说明:“#”是假设的表达式开始符和结束符,不可用。
  为实现算法,使用了两个堆栈分别寄存运算符和运算数(中间结果值)。算法基本思路如下:首先置操作数栈S1为空,表达式起始符“#”设为运算符栈S2的栈底元素;依次读入表达式的各符号,若是数字字符则连接在一起转换为int型操作数进S1栈;若是运算符§2,则和S2栈的栈顶运算符51比较优先级后作相应操作,直至整个表达式求值结束。算法流程图5.1如下:
  
  【问题】请将流程图补充完整。
问答题
【正确答案】
【答案解析】
问答题
【正确答案】
【答案解析】S1弹栈并输出 [解析] 此处是整个算法结束之前输出计算结果。
问答题
【正确答案】
【答案解析】§1<§2 [解析] 当运算符1的优先级小于运算符2的优先级时,此时不能进行运算,须将当前字符入栈并定位下一字符。
问答题
【正确答案】
【答案解析】§1 = §2 [解析] 运算符优先级相等时只有两个运算符都是括号的情况,所以此时完成括号匹配。
问答题
【正确答案】
【答案解析】运算结果入栈 [解析] 当运算符1的优先级大于运算符2的优先级时,表示前面的运算符1已经可以运算了,所以此处进行运算并将结果入栈。