免費開始練習
普考申論題 110年 [資訊處理] 程式設計概要

第 二 題

📖 題組:
二、程式語言 C 的程式碼是由許多函式(Function)組成。 #include int memo[20][20], number=0; int B(int n, int k){ if((n >= 0)&&(k >= 0)&&(n >= k)) if((k == 0)||(k == n)){ memo[n][k] = 1; return 1; } else if(memo[n][k] > 0) return memo[n][k]; else{ memo[n][k] = B(n-1, k-1)+ B(n-1, k); number+=2; return memo[n][k]; } else return 0; } void f(int N, int M){ int sum=0; for(int i=1; i<=N; i++){ if(i>=10)break; if(i%3==0)continue; sum = sum + B(i, 2); } printf("%d %d ", sum, number); } int g(int N, int M){ if((N<=0)||(M<0))return 1; else return(M + N + g(M-2, N-3)); } int main(){ f(20, 10); printf("%d\n", g(20, 10)); return 0; }
📝 此題為申論題,共 3 小題

小題 (二)

請說明上述程式中 break 與 continue 指令行的意義,並比較兩個指令之功能差異。(5 分)

思路引導 VIP

本題測驗基礎的控制流程指令。首先分別說明 breakcontinue 在該程式中的具體作用,然後抽象出兩者的根本功能差異。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題考查 C 語言中常用的兩種迴圈控制指令:breakcontinue 的語法意義與控制流程差異。 【分析與論述】

小題 (一)

請說明上述程式執行的結果。(15 分)

思路引導 VIP

這是一道程式追蹤題(Code Tracing)。需要分兩階段追蹤:1. 追蹤 f(20, 10),解構 for 迴圈中 breakcontinue 的作用,確認實際執行的 i 值。接著追蹤帶有動態規劃(Memoization)機制的遞迴函式 B(i, 2),並仔細計算全域變數 number 被加了多少次。2. 追蹤 g(20, 10) 的遞迴呼叫過程,直至滿足終止條件,將所有回傳值加總。最後依照 printf 格式寫出輸出字串。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗對於迴圈控制(break/continue)、遞迴函式執行流程、動態規劃(全域陣列快取結果)的追蹤能力,以及全域變數狀態變化的理解。 【分析與論述】

小題 (三)

請說明 C 程式使用遞迴(Recursion)與迴圈(Loop),在時間、空間與程式可讀性之優缺點。(5 分)

思路引導 VIP

這是一道經典的觀念比較題。切入點應嚴格依照題目給定的三個維度進行對比:時間(執行速度/額外開銷)、空間(記憶體使用/堆疊溢位風險)、可讀性(程式邏輯表達/維護性)。

🤖
AI 詳解
AI 專屬家教

【考點分析】 考查演算法實作方法的選擇,要求考生深入了解遞迴與迴圈在系統底層運作機制的差異,並能評估其軟體工程上的優劣。 【分析與論述】

🏷️ 相關主題

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