免費開始練習
普考申論題 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);
}
}
📝 此題為申論題

思路引導 VIP

看到此題,應先確認初始輸入值,然後運用逐步追蹤法(Trace Table)依照迴圈條件與條件分支依序執行。重點在於正確計算每次 n 除以 3 的餘數來決定進入哪個分支,並注意 printf 的位置以確保沒有漏掉初始值與最終更新的值。

🤖
AI 詳解 AI 專屬家教

【解題思路】運用逐步追蹤法,根據 while 迴圈條件與 if-else 分支邏輯,一步步記錄變數 n 的變化與列印結果。 【詳解】 已知初始呼叫 f(30),變數 n = 30

▼ 還有更多解析內容
📝 程式碼逐步追蹤技巧
💡 系統性追蹤變數狀態與迴圈執行流以求精確輸出。

🔗 程式執行追蹤流程

  1. 1 初始輸出 — 印出參數傳入的初始值 n=30
  2. 2 模數判斷 — 計算 n%3 剩餘值,選擇對應 if 分支
  3. 3 變數更新 — 執行賦值運算並列印該階段的 n 值
  4. 4 條件檢查 — 確認 n!=1 判斷式,決定續留或跳出
🔄 延伸學習:延伸學習:考量此邏輯在不同輸入下是否可能產生無窮迴圈
🧠 記憶技巧:起手看起點,判斷走分支,條件斷生死,列印莫遺漏。
⚠️ 常見陷阱:最常遺漏迴圈外的初次輸出,或在分支運算(如模數計算)中發生失誤。
迴圈複雜度分析 遞迴演算法 控制流程圖

🏷️ AI 記憶小卡 VIP

AI 記憶小卡

升級 VIP 解鎖記憶小卡

考前複習神器,一眼掌握重點

🏷️ 相關主題

程式設計基礎概念與實作演練
查看更多「[資訊處理] 程式設計概要」的主題分類考古題