73. 將中序運算式 A + B * C-D / E 轉換為後序運算式,結果為何?
(A) A B C * + D E /-
(B) A B + C * D E /-
(C) A B C * D E / +-
(D) A B C + * D E-/
答案:登入後查看
統計: A(12), B(0), C(4), D(1), E(0) #3455149
統計: A(12), B(0), C(4), D(1), E(0) #3455149
詳解 (共 2 筆)
#6473853
要將中序運算式 (Infix expression) 轉換為後序運算式 (Postfix expression),我們需要考慮運算元的優先級 (precedence) 和結合性 (associativity)。
給定的中序運算式是:A + B * C - D / E
運算子優先級(由高到低):
- *, /
- +, -
通常,相同優先級的運算子是左結合的(left-associative)。
我們可以使用「堆疊 (Stack)」來進行轉換,或者直接按照優先級和結合性來處理。這裡我們直接按照優先級來處理:
步驟 1:處理最高優先級的運算子 * 和 /。
- B * C 轉換為 B C *
- D / E 轉換為 D E /
現在運算式變為(想像為:A + (B C *) - (D E /)): A + B C * - D E /
步驟 2:處理次高優先級的運算子 + 和 -。 由於它們是左結合的,我們從左到右處理。
-
先處理 A + (B C *)
- 將 A 和 B C * 加上 +,得到 A B C * +
- 現在運算式變為:(A B C * +) - (D E /)
-
再處理 (A B C * +) - (D E /)
- 將 A B C * + 和 D E / 加上 -,得到 A B C * + D E / -
最終的後序運算式為:A B C * + D E / -
現在對照選項:
- (A) A B C * + D E /- (符合)
- (B) A B + C * D E /- (錯誤,+ 的優先級比 * 低,不應先計算)
- (C) A B C * D E / +- (錯誤,+ 和 - 的順序顛倒)
- (D) A B C + * D E-/ (錯誤,多處運算順序錯誤)
The final answer is A
0
0