國中教甄|資訊科技資訊科技104 年第 37 題單選題
int i, j, temp, a[10]={1,2,3,4,9,8,7,6,5}; for(i = 0; i < 10; i++) for(j = i; j < 10; j++) if(a[i]>a[j]) { temp=a[i]; a[i]=a[j]; a[j]=temp; } for(i = 0; i < 10; i++) printf("%d ",a[i]); 以上程式碼的輸出為何?
A9876543210
B0123456789正確答案
C123498765
D以上皆非
B正確答案
程式碼實作選擇排序法將陣列由小到大排序,且部分初始化時未賦值的第10個元素自動設為0,故輸出0到9。
逐選項解析
A9876543210✕ 錯誤
這是降冪(由大到小)排序的結果,但程式碼的交換邏輯是將較小的值往前移,屬於升冪排序。
B0123456789✓ 正確
程式碼為升冪排序,且第10個元素因部分初始化而自動設為0,排序後結果即為0至9。
立即註冊,看完整詳解
這題的完整詳解,註冊就能看 · 每天 2 題免費
精選詳解- 完整逐選項解析
- 秒殺解題技巧與破題關鍵
- 關鍵知識表整理
- 陷阱與易錯提醒
- 同考點歷屆題庫連續刷題與錯題本