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

詳解 (共 2 筆)

#6470733
【正解】(A) A B C * + D...
(共 247 字,隱藏中)
前往觀看
2
0
#6473853

要將中序運算式 (Infix expression) 轉換為後序運算式 (Postfix expression),我們需要考慮運算元的優先級 (precedence) 和結合性 (associativity)。

給定的中序運算式是:A + B * C - D / E

運算子優先級(由高到低):

  1. *, /
  2. +, -

通常,相同優先級的運算子是左結合的(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