
106年特種考試地方政府公務人員考試試題 代號:33550 全一頁
等別: 三等考試
類科: 電力工程
科目: 計算機概論
考試時間 : 2 小時 座號:
※注意:
禁止使用電子計算器。
不必抄題,作答時請將試題題號及答案依照順序寫在試卷上,於本試題上作答者,不予計分。
本科目除專門名詞或數理公式外,應使用本國文字作答。
(請接背面)
一、分封交換(packet switching)技術是現在世界上網際網路通訊最重要的基礎,請詳述
此技術的工作原理。(15 分)
二、冗餘(redundancy)是容錯系統(fault-tolerant system)常使用的設計方法。具有容錯
特性的電腦系統中,冗餘的類型有那些?請詳述每一種類型並舉例說明。(20 分)
三、水桶排序(bucket sort)是一種常見的排序方法。
使用水桶排序法將下列十個數字由小到大排列,必須清楚解釋排序過程。(15 分)
28, 57, 16, 0, 72, 99, 33, 82, 12, 67
當排序的數字有何種特性時,水桶排序法的平均時間複雜度可達 O(n)?請試述其
理由。(10 分)
四、下列為某一語言之 BNF(Backus-Naur Form)表示法:
<assignment> ::= <identifier> = <expr>
<expr> ::= <expr> + <expr> | <expr> – <expr> | <expr> * <expr> | <digit>
<identifier> ::= A | B | C | D | E
<digit> ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
C = 8 + 3 * 2 – 5 是否合乎此語法?請詳細說明理由。(10 分)
請問此語法是否為混淆的(ambiguous)?請詳細解釋理由。(10 分)
五、請詳細解釋下列 C語言程式的執行過程,包括 foo 函式被呼叫的順序(必須列出參
數num 的數值),最後寫出程式的輸出。(20 分)
#include <stdio.h>
int foo(int num);
int main(void)
{ printf("%dn",foo(5));
return(0);
}
int foo(int num)
{ if ((num<=0) || (num==2)) return 1;
else if (num==1) return 2;
else return (foo(num-2)+foo(num-3)+foo(num-1));
}