程序员 · 高频练习

后缀表达式8 3 2 * + 7 -的计算结果是多少?

初级 单选题 第 1125 题 较难 程序员后缀表达式表达式求值操作数顺序
题目

使用栈计算后缀表达式“8 3 2 * + 7 -”,最终结果是()。

A 7
B 9
C 13
D 21
题目类型:原创高频练习题 用途:用于帮助理解程序员相关考点和答案解析,不等同于官方真题。
正确答案
A
答案解析

依次压入8、3、2;遇*计算3×2=6并压回;遇+计算8+6=14;压入7后遇-,计算14-7=7。

选项分析

A

正确。表达式对应8+(3×2)-7。

B

错误。运算次序或中间结果处理有误。

C

错误。可能遗漏最后一次减法或算错乘法。

D

错误。没有按照后缀表达式的运算符位置执行。

本题为什么容易错

后缀表达式没有括号,看起来陌生,但它其实已经把运算顺序写死了。看到运算符就只处理栈顶最近的两个数。

先看结论

简短答案

后缀表达式8 3 2 * + 7 -的计算结果是多少,正确答案是 A(7)。依次压入8、3、2;遇*计算3×2=6并压回;遇+计算8+6=14;压入7后遇-,计算14-7=7。

解析

易混淆概念对比表

概念本题判断区别要点记忆提示
7 本题正确答案 正确。表达式对应8+(3×2)-7。 看到题干核心场景时优先联想到它
9 本题干扰项 错误。运算次序或中间结果处理有误。 看到该词不要急着选,先判断是否真正解决题干问题
13 本题干扰项 错误。可能遗漏最后一次减法或算错乘法。 看到该词不要急着选,先判断是否真正解决题干问题
21 本题干扰项 错误。没有按照后缀表达式的运算符位置执行。 看到该词不要急着选,先判断是否真正解决题干问题
本题易混淆选项怎么区分
  • 9:错误。运算次序或中间结果处理有误。
  • 13:错误。可能遗漏最后一次减法或算错乘法。
  • 21:错误。没有按照后缀表达式的运算符位置执行。
复习

知识点详解

后缀表达式从左向右扫描,操作数入栈;遇二元运算符时,先弹右操作数,再弹左操作数,计算后将结果压回。扫描结束时栈内应只剩最终结果。

备考速记

数字进栈,符号开算;先弹右边,后弹左边。

操作数顺序在操作数顺序场景中的作用

后缀表达式无需括号和优先级判断,适合基于栈的解释执行。若运算符元数不同,还要按一元或二元规则弹出相应数量的操作数。

拓展

同类题怎么考

  • 计算给定后缀表达式的值。
  • 判断表达式求值应使用哪种数据结构。
操作数顺序在程序员软考中的考法

每次只做一个局部动作,不要先把后缀表达式凭感觉改写;减法写成‘第二次弹出-第一次弹出’。

解题思路

把每次运算后的栈写出来:8,3,2→8,6→14→14,7→7。中间结果清楚,选A。

考点定位

弹栈时第一个弹出的是右操作数,第二个才是左操作数。加法乘法不易暴露顺序错误,减法除法最能检查这一点。

易错提醒

  • 减法时用先弹出的数减后弹出的数。
  • 计算后忘记把中间结果压回栈。
  • 遇数字后立即运算,没有等到运算符。

备考提示

  • 草稿上画一列栈,每读一个记号更新一次。
  • 专门用含减法和除法的题检查左右操作数顺序。

你可能还想了解

  • 后缀表达式怎么计算?
  • 减法时弹栈顺序是什么?
  • 为什么后缀表达式不需要括号?

本文小结

后缀表达式依次得到3×2=6、8+6=14、14-7=7,最终结果为7。