表达式 $\texttt{a*(b+c)-d}$ 的后缀表达形式为( )。
拿到这种带括号的式子,别急着套公式,脑子里先画个树:括号里先算,再乘,最后减。按这个顺序把操作数挪到运算符后面,就能一眼看出后缀形式。
很多学生会死记硬背‘左括号对应右括号’的转换规则,结果在 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。