NOIP 提高组初赛 · NOIP 2016 提高组初赛试题 第 6 题

选择题 · 答案 B · 考点:栈(stack)

← 整套速查表 NOIP 提高组初赛 全部真题

题目

表达式 $\texttt{a*(b+c)-d}$ 的后缀表达形式为( )。

答案:B

考点

栈(stack) 讲解 →栈(stack) 真题汇总 →

解题思维

拿到这种带括号的式子,别急着套公式,脑子里先画个树:括号里先算,再乘,最后减。按这个顺序把操作数挪到运算符后面,就能一眼看出后缀形式。

常见错误

很多学生会死记硬背‘左括号对应右括号’的转换规则,结果在 a*(b+c)-d 这种式子里,把最后的减号 d 给漏了,或者误以为乘号在 d 后面,写成 abc+*d- 却忘了减号的位置,甚至把 a 的位置搞错。其实操作数 a、b、c、d 的相对顺序从来不变,变的是运算符紧跟谁。只要记住‘括号里的先算,乘法比减法优先级高’,就不会把减 d 写成乘 d 或者漏掉减号。

详细解析(节选)

考点概念:中缀表达式转后缀(逆波兰式)

后缀表达式就是把中缀里的运算符挪到它对应的两个操作数后面去,操作数 a、b、c、d 的相对顺序永远不变,只是运算符跟着谁走。

命题视角:为什么爱考这个?

命题人特别喜欢在带括号的式子里挖坑:先算括号里的加法,再算乘法,最后做减法。学生如果只记规则不画图,很容易把最后的减 d 漏掉,或者把乘号的位置放错。这道题就是典型:a*(b+c)-d,括号里先算 b+c,再和 a 乘,最后减 d。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断