表达式 $\texttt{a * d - b * c}$ 的前缀形式是( )。
这题考前缀表达式(波兰式)。拿到题先别急着背规则,直接看运算顺序:谁先算谁就往前放。这题里乘法比减法优先级高,所以先把两个乘法项各自打包成前缀,再把减法放在最前面,最后把打包好的两个乘法串连起来,就能直接写出答案了。
最容易掉进两个坑:一是把后缀(逆波兰)和中缀搞混,比如选 A 就把运算符放后面了;二是没分清优先级,看到减法就想先把 a 和 d 连起来,结果把乘法拆散了。其实前缀的核心就是‘谁先算谁先写’,只要抓住运算顺序,就不会把选项看花眼。
前缀表达式就是把运算符写在操作数前面,像波兰语一样,所以叫波兰式。它的核心规则就一条:运算顺序决定书写顺序,谁先算,谁就往前放。
NOIP 初赛特别喜欢用这种‘翻译题’,不让你写代码,只让你把中缀算式转成前缀。命题人挖坑的点通常就两个:一是混淆前后缀,二是忽略优先级。比如这题,如果不看优先级,直接按从左到右读,很容易把 a*d 当成一个整体,或者把减法放在最后,结果就掉进 A 或 C 的陷阱了。