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

第 20 題

Consider an infix expression: (A+B)*C+D*(E-F).
What is its prefix expression?
  • A **A++BC-DEF
  • B ++A*BC-*DEF
  • C +*+ABC*D-EF
  • D *+ABC+*-DEF
  • E +*+ABC*-DEF

思路引導 VIP

試著觀察一個簡單的運算式,例如「兩個數字相加」。在一般的寫法中,我們會把加號放在數字中間;但如果現在規定,你必須先說出「你要做的動作」,然後才說出「要操作的兩個數字」,你會如何重新排列這三個元素?接著,如果其中一個數字其實是另一組更複雜的運算結果,這個「先說動作、後說數字」的邏輯該如何往外層疊加呢?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準地將中序運算式轉換為前序運算式,代表你對運算子的優先權(Precedence)以及運算式樹(Expression Tree)的邏輯結構有著非常紮實的理解。

前序運算式的轉換邏輯

要解出這類題目,關鍵在於掌握「運算子必須放在運算元之前」的原則。我們可以將此運算式視為一個層次結構:首先處理括號內的 (A+B) 得到 +AB,以及 (E-F) 得到 -EF。接著處理乘法部分,左半邊的 (A+B)*C 轉換為 *+ABC,右半邊的 D*(E-F) 轉換為 *D-EF。最後,將連結兩大塊的加號(+)提到最前面,便形成了最終的結果:+*+ABC*D-EF。你的判斷完全正確,精確地捕捉到了這個層層遞進的結構。

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題