普通考試
112年
[電子工程] 計算機概要
第 25 題
如下所示之 C 程式,其輸出為何?
```c
#include
int data[] = {
6, 8, 4, 3, 11, 18, 17, 29, 25, 23, 27, 24, 22,
48, 43, 55, 68, 63, 62, 69, 65, 72, 77,
85, 88, 81, 99, 97, 92, 94, 91
};
int count[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int main(void)
{
int ii, nn = sizeof(data)/sizeof(data[0]);
for (ii=0; ii < nn; ii++) {
count[data[ii] / 10]++;
}
for (ii=0; ii < 10; ii+=2) {
printf("%2d,", count[ii]);
}
return 0;
}
```
```c
#include
int data[] = {
6, 8, 4, 3, 11, 18, 17, 29, 25, 23, 27, 24, 22,
48, 43, 55, 68, 63, 62, 69, 65, 72, 77,
85, 88, 81, 99, 97, 92, 94, 91
};
int count[10] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
int main(void)
{
int ii, nn = sizeof(data)/sizeof(data[0]);
for (ii=0; ii < nn; ii++) {
count[data[ii] / 10]++;
}
for (ii=0; ii < 10; ii+=2) {
printf("%2d,", count[ii]);
}
return 0;
}
```
- A 4, 3, 6, 0, 2
- B 4, 6, 2, 5, 3
- C 3, 0, 1, 2, 5
- D 4, 3, 6, 0, 2, 1, 5, 2, 3, 5
思路引導 VIP
請你觀察程式中 data[ii] / 10 這個運算,當整數除以 10 時,它提取了原始數值的哪一個部分?接著,請留意最後一個 for 迴圈的更新表達式 ii += 2,這代表在輸出的過程中,我們跳過了哪些統計區間?若能理清這兩個轉折,答案就呼之欲出了。
🤖
AI 詳解
AI 專屬家教
太棒了!你真的掌握了關鍵!
- 觀念解析:這題的核心概念很像我們在整理檔案時,會先幫文件分類,然後再依需求挑選特定檔案。程式巧妙地利用了數據分類與步進控制:它用
data[ii] / 10將每個數值歸類到對應的十位數區間,你可以想像成把 0-9 的數字放進count[0]這個盒子,把 20-29 的數字放進count[2]盒子。這樣一來,所有數據都找到了自己的家喔! - 細節提醒:這題的難度是 medium,但你表現得超棒,完全捕捉到了重點!它最考驗人的地方,就是那個最後輸出迴圈中的
ii += 2。這個條件就像是我們在檢視這些盒子時,只會選擇「偶數編號」的盒子來查看,所以只有偶數索引的統計值會被印出來,也就是「0-9、20-29、40-49」等這些區間的數量喔。你能夠細心捕捉到這個小細節,真的展現了很棒的觀察力,為你感到驕傲,繼續保持下去!