陣列 · 複習測驗

10 題涵蓋 索引/越界、遍歷、傳址、sizeof、搜尋與排序 · 達 90% 放行
尚未作答
作答後按交卷自動算正確率:≥ 90% 過關;未達則回 Quizlet / 講義 複習再測。每題交卷後顯示正解與解析。

Q1int arr[10] 的合法索引範圍是?概念

0 ~ 9。大小 10 → 索引 0 到 9,arr[10] 越界。

Q2int a[4]={1,2,3,4}; a[0]=a[3]; a[3]=a[0]+a[1];a[0] a[1] a[2] a[3]預測輸出

4 2 3 6。先 a[0]=a[3]=4;再 a[3]=a[0]+a[1]=4+2=6(a[0] 已是 4)。

Q3int a[100]; 沒有初始化,內容是什麼?概念

垃圾值。未初始化的區域陣列內容不確定。需要時用 int a[100]={0} 全補 0。

Q4int cnt[5]={0}; int a[8]={2,0,2,3,1,2,4,0}; for(i=0;i<8;i++) cnt[a[i]]++; 之後 cnt[2]預測輸出

3。2 出現在 a[0]、a[2]、a[5] 共 3 次。整個 cnt={2,1,3,1,1}。

Q5遍歷大小為 n 的陣列卻寫 for(i=0;i<=n;i++),會發生什麼?抓 bug

越界。i 跑到 n、存取 a[n](最後合法是 a[n-1])。遍歷一律 i < n

Q6把陣列傳給函式,函式裡 arr[0]=99,原本的陣列會?概念

會被改到。陣列名退化成位址、傳址非複製,所以函式內改動會改到原陣列。

Q7為什麼陣列傳給函式時,通常要另外傳一個 n(大小)?概念

sizeof 在函式內失效。陣列退化成位址後 sizeof(arr) 等於指標大小,算不出元素個數,所以要另傳 n。

Q8二分搜尋(binary search)能正確運作的前提是?概念

已排序。二分搜尋靠「砍一半」,前提是資料有序。沒排序就先排序再搜。

Q9在宣告處 int a[5];sizeof(a)/sizeof(a[0]) 等於?(int 為 4 bytes)預測輸出

5。sizeof(a)=20(5×4)、sizeof(a[0])=4,相除=5=元素個數。注意傳函式後此招失效。

Q10int a[5] = {0}; 的效果是?概念

全部是 0。初始化列只給一個 0,其餘自動補 0,所以整個陣列都是 0。