地方政府公務人員四等-電子工程類科計算機概要113 年第 30 題單選題
C 函數 bar()的執行,產生下列何輸出結果?
void bar(void) {
int i, j;
for ( i = 0 ; i < 5 ; i++ ) {
for ( j = 0 ; j < i+1 ; j ++) printf("*");
printf(" ");
}
}
A***** ***** ***** ***** *****
B***** **** *** ** *
C* ** *** **** *****正確答案
D* ** *** ** *
C正確答案
雙層迴圈控制星號數量,外層決定執行次數,內層決定每次印出的星號數,呈現遞增趨勢。
為什麼答案是 C
i=0印1個*,i=1印2個*,依序遞增至i=4印5個*,每次印完後加一空格,完全符合程式邏輯。
載入中…
完整詳解
Pro · 無限重點 雙層迴圈控制星號數量,外層決定執行次數,內層決定每次印出的星號數,呈現遞增趨勢。
內層迴圈條件為 j < i+1,代表星號數量會隨著 i 增加而遞增,從 1 個遞增到 5 個,直接選 C。
逐選項分析
A✕
若要每次印出 5 個星號,內層迴圈條件應為固定次數(如 j < 5),不符合本題 j < i+1 的遞增條件。
B✕ 陷阱
星號數量遞減,這需要外層迴圈遞減(如 i 從 5 到 1)或內層條件改變,不符合本題 i 從 0 遞增到 4 的邏輯。
C✓ 正確
i=0印1個*,i=1印2個*,依序遞增至i=4印5個*,每次印完後加一空格,完全符合程式邏輯。
D✕
星號數量先增後減,這需要更複雜的條件判斷(如 if-else),不符合本題單純單向遞增的迴圈邏輯。
迴圈變數追蹤表
| 外層迴圈 i | 內層迴圈執行次數 (i+1) | 印出星號數 | 該次迴圈輸出結果 |
|---|
| 0 | 1 | 1 | * |
| 1 | 2 | 2 | ** |
| 2 | 3 | 3 | *** |
| 3 | 4 | 4 | **** |
| 4 | 5 | 5 | ***** |
考生在看巢狀迴圈時,容易將遞增看成遞減,或者忽略了內層迴圈的終止條件是與外層變數 i 連動的,誤以為是印出固定長度的星號矩陣。