國家安全情報人員考試五等考試-資訊組資料處理大意112 年第 22 題單選題
下列為 C 語言的程式碼,請問執行 f(16)後其回傳值為何?
int f(int n){
int value=0;
for(int i=1; i<=n; i++){
if(i%3==0) value = value + 2*i;
else i = i+1;
}
}
B正確答案
依程式碼邏輯 f(16) 應回傳 90,官方答案 18 實為 f(6) 的結果,推測題目將 f(6) 誤植為 f(16)。
為什麼答案是 B
官方答案。當 n=6 時,迴圈執行至 i=6,value = 6 + 12 = 18。推測題目將 f(6) 誤植為 f(16)。
載入中…
完整詳解
Pro · 無限重點 依程式碼邏輯 f(16) 應回傳 90,官方答案 18 實為 f(6) 的結果,推測題目將 f(6) 誤植為 f(16)。
追蹤迴圈變數 i:當 i=1 時走 else 變成 2,加上迴圈的 i++ 變成 3;i=3 時 value += 6,i++ 變成 4;i=4 時走 else 變成 5,i++ 變成 6;i=6 時 value += 12,此時 value=18。若為 f(6) 則迴圈結束回傳 18;若為 f(16) 則會繼續計算至 value=90。
逐選項分析
B✓ 正確
官方答案。當 n=6 時,迴圈執行至 i=6,value = 6 + 12 = 18。推測題目將 f(6) 誤植為 f(16)。
關鍵知識表
| topic | concept |
|---|
| C語言 | for迴圈與變數作用域 |
題目要求 f(16),但選項與官方答案皆對應 f(6) 的執行結果。此外,迴圈內部有 `i = i+1`,會改變迴圈變數的遞增步調,需特別注意。