初考-統計資料處理大意106 年第 45 題單選題
請問下列程式中,printf( "\n" )總共執行幾次?
for (i=1; i<=4; i++)
{ for (j=1; j<5; j++)
printf( "*" );
printf( "\n" );
}
B正確答案
外迴圈跑幾次,換行就印幾次。外迴圈 i=1~4 共 4 次,故印 4 次 \n。
為什麼答案是 B
printf("\n") 放在外迴圈大括號內、內迴圈之後,外迴圈執行幾次就印幾次。i=1,2,3,4 共 4 次。
載入中…
完整詳解
Pro · 無限重點 外迴圈跑幾次,換行就印幾次。外迴圈 i=1~4 共 4 次,故印 4 次 \n。
看 printf("\n") 的位置:在外迴圈內、內迴圈外 → 次數等於外迴圈次數。
逐選項分析
A✕
5 次是誤以為 i<=4 跑 5 次,但 i 從 1 到 4 只跑 4 次。
B✓ 正確
printf("\n") 放在外迴圈大括號內、內迴圈之後,外迴圈執行幾次就印幾次。i=1,2,3,4 共 4 次。
C✕ 陷阱
20 是把星號次數誤算成 4×5 的結果;但本題內迴圈條件為 j<5,只跑 4 次,星號實際為 4×4=16,且題目問的是換行次數,故 20 錯誤。
D✕
1 次是誤以為 \n 在所有迴圈外只執行一次,但它在外迴圈大括號內。
巢狀迴圈執行追蹤
| 外迴圈 i | 內迴圈 j 次數 | 印 * | 印 \n |
|---|
| 1 | 1~4 (4次) | **** | 1 次 |
| 2 | 1~4 (4次) | **** | 1 次 |
| 3 | 1~4 (4次) | **** | 1 次 |
| 4 | 1~4 (4次) | **** | 1 次 |
| 合計 | - | 16 個 | 4 次 |
陷阱在於判斷 printf("\n") 屬於哪一層迴圈。它在外迴圈的大括號內、但不在內迴圈的大括號內(內迴圈沒加 { },只管到下一行 printf("*")),所以只跟著外迴圈跑 4 次。