初考-統計資料處理大意107 年第 16 題單選題
下列那一項是將 a*b+c*d 的式子以後序(Postfix)表示法呈現?
Aab*cd*+正確答案
B+*ab*cd
Ca+b*c+d
D+*cd*ab
A正確答案
中序轉後序:運算子放到兩個運算元之後,a*b→ab*,c*d→cd*,再加法變 ab*cd*+。
為什麼答案是 A
a*b 轉後序為 ab*,c*d 轉後序為 cd*,兩者再相加即 ab*cd*+,符合後序表示法「運算子在後」的規則。
載入中…
完整詳解
Pro · 無限重點 中序轉後序:運算子放到兩個運算元之後,a*b→ab*,c*d→cd*,再加法變 ab*cd*+。
口訣:左運算元 + 右運算元 + 運算子。由內而外逐層轉換即可。
逐選項分析
A✓ 正確
a*b 轉後序為 ab*,c*d 轉後序為 cd*,兩者再相加即 ab*cd*+,符合後序表示法「運算子在後」的規則。
B✕ 陷阱
+*ab*cd 是前序(Prefix)與後序混用的錯誤寫法。真正的前序應為 +*ab*cd(運算子全在前),但這裡結構不正確。
C✕
a+b*c+d 是中序(Infix)表示法,而且運算順序也與原式不同,明顯錯誤。
D✕ 陷阱
+*cd*ab 將 c*d 放前、a*b 放後,順序顛倒;且運算子位置也不符後序規則,屬陷阱選項。
三種表示法對照(a*b+c*d)
| 表示法 | 運算子位置 | 結果 | 用途 |
|---|
| 中序 Infix | 運算元之間 | a*b+c*d | 人類閱讀 |
| 前序 Prefix | 運算元之前 | +*ab*cd | 波蘭表示法 |
| 後序 Postfix | 運算元之後 | ab*cd*+ | 堆疊運算、編譯器 |
考生容易把前序和後序搞混,或把 c*d 寫在 a*b 之前。記住:後序表示法「由左到右」先出現的運算元,就是原式中「先運算」的部分,最外層的運算子放最後。