
100年公務人員特種考試司法人員考試試題 代號:
等 別: 三等考試
類 科: 檢察事務官電子資訊組
科 目: 程式語言
考試時間: 2小時 座號:
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
全一頁
30780
一、編寫程式有時需叫用(invoke)能產生亂數(random number)的副程式。請問為何
叫用副程式以產生亂數前應先設定亂數種子(random seed)?作為亂數種子的值可
以是固定數值也可以是系統時間,請各舉一例分別說明固定數值及系統時間之適用
時機。(20 分)
二、程式語言中交換兩個變數時,常以暫存變數 tmp 協助交換。
請以虛擬碼(pseudo code)寫出如何在主程式中交換兩個變數(v1及v2)。
(5分)
以C語言的指標(pointer)寫法,寫出主程式如何叫用副程式,以交換兩個整
數變數(v1及v2)。再寫出完整的副程式。副程式名稱為 swap,且無傳回值
(return value)。(10 分)
以傳參考叫用(call by reference)的方式,用 C++將交換兩個整數變數 (v1及
v2)的過程寫成完整的副程式。副程式名稱為 swap,且無傳回值。(5分)
三、費氏(Fibonacci)數列定義如下:
FB0B = 0; FB1B = 1; n> 1 時,FBnB = FBn - 1B + FBn - 2B
以遞迴(recursive)方式寫出可得出費氏數列中第 n個數的虛擬碼。(5分)
若要得出FB5B,則FB0B、FB1B、FB2B、FB3B、FB4B各被重覆叫用幾次?(5分)
為了避免因為遞迴叫用FBn - 1B 和FBn – 2B所浪費的重覆計算時間,如何修改
中的虛擬
碼,使得該函式仍是以遞迴方式進行,但計算過的FBn - 1B 和FBn – 2B不須重覆計算?(
10 分)
四、以 C++或JAVA 為例,說明程式語言如何提供異常處理(exception handling)的機
制。並根據所描述的機制,分別就強固性(robust)、可讀性及可維護性,說明異
常處理的機制對應用程式的重要性。(20 分)
五、何謂晚期繫結(late binding)?晚期繫結相對於早期繫結(early binding)有何
優、缺點?以物件導向(object oriented)程式的多形(polymorphism)和複載
(overloading)為例,兩者的繫結時機相同或不同?解釋其相同或不同之原因。
(20 分)