免費開始練習
調查局三等申論題 109年 [電子科學組] 計算機概論

第 一 題

📖 題組:
請回答下列問題: (包含 Figure-1 與 Figure-2 程式碼) Figure-1: #include #include int f(int p, int q); int main() { int a, n, c; scanf("%d,%d", &a, &n); c = f(a, n); printf("c = %d", c); system("pause"); return 0; } int f(int p, int q) { if(q != 0)return p*f(p, q-1); else return 1; } Figure-2: #include #include int main(void) { char e = 0x3c; char f = 0x03; char r; r= ~e; printf("%d\n", r & 0xff); printf("%d\n",(f<<2)); system("PAUSE"); return 0; }
📝 此題為申論題,共 2 小題

小題 (一)

下列 Figure-1的 C 程式的功用是什麼?如果執行該程式,且輸入兩個整數依序是2及8,則輸出的結果是什麼?(15分)

思路引導 VIP

面對遞迴程式題,首先應辨識出「終止條件(Base Case)」與「遞迴呼叫(Recursive Step)」。將抽象的程式碼轉化為數學遞迴關係式(如本題為 p * p^(q-1)),即可洞悉其核心功用為指數運算,再將具體數值逐層代入展開推導即可得分。

🤖
AI 詳解
AI 專屬家教

【解題思路】利用遞迴展開法(Recursion Trace)追蹤程式執行流程,辨識函式的數學本質為「指數(Power)運算」,再代入實質參數推導出最終輸出結果。 【詳解】 一、程式功用解析

小題 (二)

如果執行 Figure-2的 C 程式,則輸出的結果是什麼?(10分)

思路引導 VIP

本題測驗位元運算(Bitwise operations)與 C 語言的型態提升(Integer Promotion)。解題時需先將十六進位轉為二進位,逐位元執行反相(~)、位移(<<),並特別注意 & 0xff 遮罩的作用是消除字元型態提升為整數時所產生的符號延伸(Sign extension)。

🤖
AI 詳解
AI 專屬家教

【解題思路】運用二進位轉換與位元運算法則,逐位元(Bit-by-bit)推導,並結合 C 語言的資料型態提升與遮罩(Masking)機制計算最終十進位數值。 【詳解】 已知條件:變數 e, f, r 皆宣告為 8 位元的字元型態(char)。

升級 VIP 解鎖