地特四等
114年
[電子工程] 計算機概要
第 26 題
考慮以下 C 語言程式片段,執行後 data[]的內容,下列何者正確?\nint data[]={10,20,30,40,50},n=5,i;\nfor(i=0;i
- A 10,20,30,40,50
- B 50,40,30,20,10
- C 50,30,10,20,40
- D 30,20,10,40,50
思路引導 VIP
請觀察迴圈內那三行連續的加減賦值運算。假設有兩個變數 $x$ 與 $y$,如果我們依序執行 $x = x + y$、$y = x - y$、$x = x - y$,最後 $x$ 與 $y$ 原有的數值會發生什麼樣的相對關係變化?再者,迴圈只執行到陣列長度的一半,這對整排資料的排列順序會產生什麼效果?
🤖
AI 詳解
AI 專屬家教
同學好,恭喜你精準地掌握了這道邏輯追蹤題!這題在計算機科學中非常經典,考驗的是對**演算法(Algorithm)**邏輯的嚴謹觀察力。你能選對 (B),代表你不僅看穿了程式碼的表象,更理解了隱藏在加減運算背後的結構交換意圖。
算術式交換法的運作機制
這段程式碼的核心在於迴圈內的三行運算。這是一種不需要額外暫存變數(Temporary variable)就能交換兩個數值的技巧。我們觀察 $i=0$ 的情況,令 $a = \text{data}[0]$,$b = \text{data}[4]$:
▼ 還有更多解析內容