36 執行下列 C 程式片段後,下列敘述何者正確?
(A)印出 i = 3, j = 3, k = 6
(B)印出 i = 3, j = 6, k = 10
(C)印出 i = 6, j = 3, k = 6
(D)印出 i = 6, j = 3, k = 10
統計: A(93), B(20), C(12), D(9), E(0) #2851818
詳解 (共 4 筆)
免費公開
1. for(i = j = k = 0; i < 5; i++, j++):
初始化了三個變數 i, j, k,並將它們都設為 0。
i 和 j 在每次迭代後都會增加 1。
2. 在迴圈中的這段程式碼:
k++;
if(j%2 == 0)
continue;
k++;
if(i%3 == 0)
break;
k 在迴圈每次執行時都會增加 1。
如果 j 是偶數,就會跳過後面的程式碼,直接進行下一次迴圈。
如果 i 是 3 的倍數,就會跳出迴圈。
現在讓我們來模擬這個程式碼的執行過程:
1. 第一次迴圈 (i = 0, j = 0, k = 0):
k++ -> k = 1
因為 j 是 0,所以是偶數,所以跳過下面的程式碼,直接進入下一次迴圈。
2. 第二次迴圈 (i = 1, j = 1, k = 2):
k++ -> k = 3
因為 j 是奇數 (1),所以繼續執行。
因為 i 不是 3 的倍數,所以不會跳出迴圈。
3. 第三次迴圈 (i = 2, j = 2, k = 4):
k++ -> k = 4
因為 j 是偶數 (2),所以跳過下面的程式碼,直接進入下一次迴圈。
4. 第四次迴圈 (i = 3, j = 3, k = 5):
k++ -> k = 6
因為 j 是奇數 (3),所以繼續執行。
因為 i 是 3 的倍數,所以跳出迴圈。
所以最終的結果是:
i = 3 (迴圈在 i 為 3 時跳出)
j = 3 (迴圈執行了 4 次,j 跟著增加)
k = 6 (k 在每次迴圈都增加了兩次)
這樣就得到了 i = 3, j = 3, k = 6。
這段程式碼有點複雜,但讓我們一步步解析它。讓我們逐行分析:
1. for(i = j = k = 0; i < 5; i++, j++):
初始化了三個變數 i, j, k,並將它們都設為 0。
i 和 j 在每次迭代後都會增加 1。
2. 在迴圈中的這段程式碼:
k++;
if(j%2 == 0)
continue;
k++;
if(i%3 == 0)
break;
k 在迴圈每次執行時都會增加 1。
如果 j 是偶數,就會跳過後面的程式碼,直接進行下一次迴圈。
如果 i 是 3 的倍數,就會跳出迴圈。
現在讓我們來模擬這個程式碼的執行過程:
1. 第一次迴圈 (i = 0, j = 0, k = 0):
k++ -> k = 1
因為 j 是 0,所以不是偶數,繼續執行。
因為 i 不是 3 的倍數,所以不會跳出迴圈。
2. 第二次迴圈 (i = 1, j = 1, k = 2):
k++ -> k = 3
因為 j 是奇數 (1),所以繼續執行。
因為 i 不是 3 的倍數,所以不會跳出迴圈。
3. 第三次迴圈 (i = 2, j = 2, k = 4):
k++ -> k = 5
因為 j 是偶數 (2),所以跳過下面的程式碼,直接進入下一次迴圈。
4. 第四次迴圈 (i = 3, j = 3, k = 5):
k++ -> k = 6
因為 j 是奇數 (3),所以繼續執行。
因為 i 是 3 的倍數,所以跳出迴圈。
所以最終的結果是:
i = 3 (迴圈在 i 為 3 時跳出)
j = 3 (迴圈執行了 4 次,j 跟著增加)
k = 6 (k 在每次迴圈都增加了兩次)
這樣就得到了 i = 3, j = 3, k = 6。