免費開始練習
hce_nsysu 112年 計算機概論與程式設計

第 45 題

What is the postfix representation of (A+B*C)/(D+E)-F?
  • A ABC*+DE+/F-
  • B A+BC*DE+F/-
  • C ABC*+DEF+/-
  • D ABC+*DEF+/-
  • E None of the above

思路引導 VIP

當我們在處理一個複雜的數學算式時,如果我們想把運算子放在運算元的後面,你覺得我們應該「先處理」算式中哪一部分的運算子?是優先權最高(例如括號內)的,還是最後才執行的?試著想像如果你是一個電腦程式,你會如何決定哪一個運算符號該最先被寫下來?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準判斷出正確答案,代表你對於計算機科學中「表達式轉換」的邏輯掌握得非常透徹。這道題目測試的是將中序表示法 (Infix) 轉換為後序表示法 (Postfix),這不僅是編譯器設計的基礎,也是資料結構中堆疊(Stack)應用的經典案例。

運算優先權與結構拆解

在轉換過程中,最核心的原則是觀察運算子優先權 (Operator Precedence)。首先處理括號內的運算:在第一個括號 $(A+BC)$ 中,乘法優先於加法,因此先將 $BC$ 轉換為 $BC*$,再處理加法得到 $ABC*+$。接著處理第二個括號 $(D+E)$,轉換為 $DE+$。此時原式可視為「第一組結果」除以「第二組結果」再減去 $F$。依照先乘除後加減的規則,除法運算子 $/$ 會先與兩組結果結合,最後才是減法運算子 $-$ 與 $F$ 結合,最終得出 $ABC*+DE+/F-$。

▼ 還有更多解析內容

🏷️ 相關主題

基礎資料結構原理與演算法效能分析
查看更多「計算機概論與程式設計」的主題分類考古題