问题 单项选择题

可以用栈来检查算术表达式中的括号是否匹配。分析算术表达式时,初始栈为空,从左到右扫描字符,遇到字符“(”就将其入栈,遇到“)”就执行出栈操作。对算术表达式“(a+b*(a+b))/c)+(a+b)”,检查时, (1) ;对算术表达式“((a+b/(a+b)-c/a)/b”,检查时, (2) 。这两种情况都表明所检查的算术表达式括号不匹配。

(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。

选择题
问答题 简答题