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

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

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

题目

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

答案:B

考点

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

解题思维

这题考前缀表达式(波兰式)。拿到题先别急着背规则,直接看运算顺序:谁先算谁就往前放。这题里乘法比减法优先级高,所以先把两个乘法项各自打包成前缀,再把减法放在最前面,最后把打包好的两个乘法串连起来,就能直接写出答案了。

常见错误

最容易掉进两个坑:一是把后缀(逆波兰)和中缀搞混,比如选 A 就把运算符放后面了;二是没分清优先级,看到减法就想先把 a 和 d 连起来,结果把乘法拆散了。其实前缀的核心就是‘谁先算谁先写’,只要抓住运算顺序,就不会把选项看花眼。

详细解析(节选)

考点概念:前缀表达式(波兰式)

前缀表达式就是把运算符写在操作数前面,像波兰语一样,所以叫波兰式。它的核心规则就一条:运算顺序决定书写顺序,谁先算,谁就往前放。

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

NOIP 初赛特别喜欢用这种‘翻译题’,不让你写代码,只让你把中缀算式转成前缀。命题人挖坑的点通常就两个:一是混淆前后缀,二是忽略优先级。比如这题,如果不看优先级,直接按从左到右读,很容易把 a*d 当成一个整体,或者把减法放在最后,结果就掉进 A 或 C 的陷阱了。

同考点真题

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