单选题
可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时,{{U}} (1) {{/U}};对算术表达式“((a+b/(a+b)-c/a)/b”,检查时,{{U}} (2) {{/U}}。这两种情况都表明所检查的算术表达式括号不匹配。
问答题 (1)
A.栈为空却要进行出栈操作
B.栈已满却要进行入栈操作
C.表达式处理已结束,栈中仍留下有字符“(”
D.表达式处理已结束,栈中仍留下有字符“)”
【正确答案】
【答案解析】A
问答题 (2)
A.栈为空却要进行出栈操作
B.栈已满却要进行入栈操作
C.表达式处理已结束,栈中仍留下有字符“(”
D.表达式处理已结束,栈中仍留下有字符“)”
【正确答案】
【答案解析】C [解析] 栈是先进后出的线性表。 对算术表达式“(a/b*(a+b))/c)+(a+b)”进行括号检查时,操作顺序为: ①遇到第1个左括号,进行入栈操作。栈中有1个左括号。 ②遇到第2个左括号,进行入栈操作。栈中有2个左括号。 ③遇到第1个右括号,进行出栈操作。栈中有1个左括号。 ④遇到第2个右括号,进行出栈操作。栈中没有左括号。 ⑤遇到第3个右括号,进行出栈操作。但此时为空栈,无法进行出栈操作。 表达式检查结束。第1空的正确答案为选项A。 对算术表达式“((a+b/(a+b)-c/a)几”进行括号检查时,操作顺序为: ①遇到第1个左括号,进行入栈操作。栈中有1个左括号。 ②遇到第2个左括号,进行入栈操作。栈中有2个左括号。 ③遇到第3个左括号,进行入栈操作。栈中有3个左括号。 ④遇到第1个右括号,进行出栈操作。栈中有2个左括号。 ⑤遇到第2个右括号,进行出栈操作。栈中有1个左括号。 表达式检查结束。栈中依然还有左括号,表示表达式不匹配,第2空的正确答案为选项C。