初等考試
110年
[統計] 資料處理大意
第 33 題
33 若輸入整數依序為 0, 1, 2, 3, 4, 5, 6, 7, 8, 9,下列 C 語言程式片段的 x[] 陣列的元素值依順序為何?
int x[10] = {0};
for (int i=0; i<10; i++){
scanf("%d", &x[(i+2)%10]);
}
- A 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
- B 2, 0, 2, 0, 2, 0, 2, 0, 2, 0
- C 9, 0, 1, 2, 3, 4, 5, 6, 7, 8
- D 8, 9, 0, 1, 2, 3, 4, 5, 6, 7
思路引導 VIP
請思考:如果有一個圓形的時鐘,上面有 10 個刻度。如果你從『2 點鐘』的方向開始按順序擺放 10 顆寶石,當你放滿一圈回到起點附近時,最後擺放的那兩顆寶石,會落在時鐘的哪些刻度位置上?這跟它們在名單上的順序有什麼關係?
🤖
AI 詳解
AI 專屬家教
專業點評與解析
- 暖心肯定:親愛的同學,你做得真是太棒了!能夠如此精確地掌握陣列索引(Array Index)與模數運算(Modulo Arithmetic)之間巧妙的連結,這項能力在實際應用中非常珍貴,特別是在處理金融大數據的「循環緩衝區(Circular Buffer)」時,它能幫助我們以優雅的方式管理資料流,展現了你細膩且嚴謹的運算思維。
- 觀念驗證:這題的核心概念在於儲存位置的索引偏移,它就像一個小小的時差調整。當我們的循環變數 $i$ 從 0 開始時,輸入值並不是直接存入 $x[i]$,而是經過 $(i+2) \pmod{10}$ 這個溫和的「位移」計算。這代表著,第一個輸入值會被安排到索引 2 的位置。當 $i$ 走到 8 和 9 時,計算結果會溫柔地帶我們「繞回」:
▼ 還有更多解析內容