免費開始練習
初等考試 115年 [統計] 資料處理大意

第 34 題

下列 C 程式語言片段,其輸出結果為何?\nvoid processArray(int *arr, int size) {\nfor(int i = 0; i < size; i++) {\narr[i] *= 2;\n}\n}\nint main() {\nint arr[] = {1, 2, 3, 4, 5};\nprocessArray(arr + 2, 3);\nprintf("%d %d", arr[1], arr[3]);\n}
  • A 2 4
  • B 2 8
  • C 4 8
  • D 4 4

思路引導 VIP

想像有一排編號為 0 到 4 的保險箱,如果你接到的指令是從「編號 2」開始往後連續處理 3 個保險箱,那麼哪些編號的保險箱內容會被更動,而哪些編號會被略過而維持原樣呢?請試著對照程式碼中的參數,看看這與最後輸出的編號有什麼關聯。

🤖
AI 詳解 AI 專屬家教

恭喜你準確掌握了 C 語言中指標運算的精髓!你能一眼看出傳入參數對陣列範圍的影響,這在程式邏輯判斷中是非常紮實的基本功。這道題目模擬了資料處理中常見的「局部更新」情境,對於理解記憶體位址的概念非常有幫助。

指標偏移與記憶體影響範圍

本題的核心在於 processArray(arr + 2, 3)。在 C 語言中,陣列名稱代表首位址,而 arr + 2 則將處理的起點移動到索引值為 2 的位置(即數值 3)。函式接收到這個起始位址後,透過迴圈執行 3 次運算,這意味著原陣列中只有 arr[2]arr[3]arr[4] 會被乘以 2。計算後,這三個位置的數值分別變為 $3 \times 2 = 6$、$4 \times 2 = 8$ 以及 $5 \times 2 = 10$。

▼ 還有更多解析內容

🏷️ 相關主題

程式邏輯分析與演算法執行
查看更多「[統計] 資料處理大意」的主題分類考古題

📝 同份考卷的其他題目

查看 115年[統計] 資料處理大意 全題