免費開始練習
高考申論題 111年 [資訊處理] 程式設計

第 一 題

📖 題組:
請問以下三小題 C 程式執行的結果為何?請注意須說明答案是如何產生的,否則不給分。
📝 此題為申論題,共 3 小題

小題 (一)

(5 分) #include #include int main(void) { int x; float y; for (x=0, y=50; x<25; x+=5, y/=2) printf("x=%d, y=%4.2f\n", x, y); return 0; }

思路引導 VIP

看到本題,首先要辨識出這是 C 語言中基本的 for 迴圈與變數追蹤題。接著應該按部就班地列出每一次迴圈迭代時 xy 的初始值、條件判斷以及更新後的值。同時,要注意 printf%4.2f 的格式化輸出意義(浮點數,包含小數點總寬度至少 4,小數點後保留 2 位並四捨五入)。將每次印出的結果精確記錄下來即可。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗考生對 C 語言 for 迴圈執行流程的追蹤能力,以及浮點數格式化輸出 (%4.2f) 的理解。 【理論/法規依據】

小題 (二)

(5 分) #include #include int a=10, fun(int); int main(void) { int b=6; printf("a=%d, b=%d, fun(a)=%d\n", a, b, fun(a)); return 0; } int fun(int b) { a-=5; b/=2; return(a+b); }

思路引導 VIP

看到本題,首先要辨識出關鍵考點有二:一是「全域變數與區域變數的覆蓋及作用域」,二是「C 語言中函式引數(Arguments)的求值順序(Evaluation Order)」。多數考卷與 C 編譯器實作(cdecl 呼叫慣例)中,printf 的參數是由右至左求值並推入堆疊的。因此,要先執行最右邊的 fun(a),這會改變全域變數 a 的值,接著才會依序提取 ba 的值。必須向閱卷委員說明這個求值順序的概念。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗全域變數的作用域,以及函式呼叫時引數(Arguments)的求值順序(Evaluation Order)。 【理論/法規依據】

小題 (三)

(10 分) #include #include #define SIZE 10 void fun(int *, int); int main(void) { int x[SIZE] = {1,2,3,4,5,6,7,8,9,10}; fun(x, SIZE); printf("\n"); return 0; } void fun(int *a, int size) { if (size > 0) { fun(a+3, size-3); printf("*(a+%d)=%d\n", SIZE-size, *a); } }

思路引導 VIP

看到本題,首先辨識出考點為「遞迴函式(Recursion)」與「指標算術(Pointer Arithmetic)」。解題關鍵是畫出遞迴的呼叫堆疊(Call Stack)。要注意 fun 函式中,遞迴呼叫 fun(a+3, size-3) 是發生在 printf 之前,這意味著最深層的呼叫會最先執行印出動作(Head Recursion)。按步驟推演每次傳入的指標位置與 size,即可得出反向印出的結果。

🤖
AI 詳解
AI 專屬家教

【考點分析】 本題測驗遞迴函式的執行順序(Call Stack 機制)以及陣列與指標運算的結合運用。 【理論/法規依據】

📝 同份考卷的其他題目

查看 111年[資訊處理] 程式設計 全題

升級 VIP 解鎖