地特四等申論題
114年
[資訊處理] 程式設計概要
第 三 題
三、若以 f(30)呼叫下列 f()函式,會列印出那些數字?(20 分)
void f(int n) {
printf ("%d\n", n);
while (n != 1) {
if ((n%3)==1) {
n = n + 2;
}
else if((n%3)==2) {
n = n + 1;
}
else {
n = n / 3;
}
printf ("%d\n", n);
}
}
void f(int n) {
printf ("%d\n", n);
while (n != 1) {
if ((n%3)==1) {
n = n + 2;
}
else if((n%3)==2) {
n = n + 1;
}
else {
n = n / 3;
}
printf ("%d\n", n);
}
}
📝 此題為申論題
思路引導 VIP
本題測試考生對於「迴圈控制(While Loop)」、「模數運算(Modulo operation %)」及「條件判斷(if-else if-else)」的程式執行追蹤能力。解題時應:(1) 注意第一個 printf 是在迴圈外、剛進入函式時執行的,所以一定會先印出初始值 30。(2) 迴圈終止條件為 n != 1,意即只要變數 n 不為 1 就會持續執行。(3) 列出每一次迴圈迭代開始時的 n 值,算出 n % 3 落在哪一個分支,更新 n 值後寫出本次迴圈最後的 printf 結果。(4) 反覆執行直至 n 變為 1,跳出迴圈。
🤖
AI 詳解
AI 專屬家教
【考點分析】 考查流程控制中的 while 迴圈運作邏輯、變數的狀態轉換,以及模數運算子(%)搭配多重條件分支(if / else if / else)之應用。 【理論/法規依據】
▼ 還有更多解析內容