108 高普考普通考試 資訊處理 計算機概要 考古題詳解

108 年・高普考・普通考試・資訊處理
試題代碼 計算機概要

第 1 題2 分

某 8 位元(bit)處理器以 2 補數(two's complement)編碼記錄有號數(signed numbers)並進行運算。下列運算中,何者將產生滿溢(overflow)?

這一題的完整詳解

核心觀念

8 位元二補數可表示的有號整數範圍為

−27 至 27−1,即−128 至 127-2^{7}\ \text{至}\ 2^{7}-1,即 -128\ \text{至}\ 127

運算結果超出此範圍時,會發生滿溢。判斷時先計算數學上的結果,再確認是否落在範圍內。

解題方法

逐一計算各選項的結果,並與 −128-128 至 127127 的表示範圍比較:

  • (A) −52−78=−130-52-78=-130,小於 −128-128,超出表示範圍,發生滿溢。
  • (B) 25+32=5725+32=57,在表示範圍內,不會滿溢。
  • (C) −10+25=15-10+25=15,在表示範圍內,不會滿溢。
  • (D) −18−33=−51-18-33=-51,在表示範圍內,不會滿溢。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 2 題2 分

假設有一個程序(process)僅能使用三個實體記憶體分頁框(physical memory page frames),且該程序的分頁 1、分頁 2、分頁 3 已依序載入主記憶體中。考慮該程序的記憶體分頁使用順序如下:

分頁 1、分頁 2、分頁 3、分頁 4、分頁 1、分頁 2、分頁 3、分頁 4、分頁 1。

若採用先進先出分頁替換演算法(first-in, first-out page replacement algorithm),則產生分頁錯誤(page faults)的次數為何?

這一題的完整詳解

核心觀念

本題考 先進先出分頁替換演算法(FIFO)。程序有 3 個實體分頁框;發生分頁錯誤且需要替換時,FIFO 會淘汰最早載入主記憶體的分頁。若存取的分頁已在記憶體中,則不會發生分頁錯誤,也不會改變其載入先後順序。

解題方法

起始時,分頁 1、2、3 已依序載入,三個分頁框已滿。依題目給定的存取順序逐次處理;分頁錯誤時,淘汰當下最早載入的分頁。

存取分頁存取後分頁框內容(由舊至新)結果
起始1、2、3—
11、2、3命中
21、2、3命中
31、2、3命中
42、3、4分頁錯誤 1:淘汰 1
13、4、1分頁錯誤 2:淘汰 2
24、1、2分頁錯誤 3:淘汰 3
31、2、3分頁錯誤 4:淘汰 4
42、3、4分頁錯誤 5:淘汰 1
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 3 題2 分

一個資料表的欄位為其他資料表的主鍵時稱之為:

這一題的完整詳解

核心觀念

本題考查關聯式資料庫中的鍵值定義。外來鍵(foreign key)是某資料表中的欄位,其值參照另一資料表的主鍵,用來建立資料表之間的關聯,並維持參照完整性。

解題方法

辨認題幹的關鍵是「一個資料表的欄位為其他資料表的主鍵」。若欄位的值用來參照另一資料表的主鍵,該欄位就是外來鍵,因此選 (B)。

例如,「訂單」資料表中的「客戶編號」若參照「客戶」資料表的主鍵「客戶編號」,則「訂單」中的「客戶編號」是外來鍵。

選項分析

  • (A) 組合鍵(composite key):由兩個或以上的欄位共同組成,用來唯一識別資料表中的一筆資料;
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 4 題2 分

在數位電路中,解碼器(Decoder)的輸出端共有 16 種不同的組合,則其輸入端應有幾個輸入線?

這一題的完整詳解

核心觀念

解碼器(Decoder)會把 nn 條輸入線所代表的二進位組合,轉換成 2n2^n 種不同的輸出組合;標準解碼器有 2n2^n 個輸出端,每一種輸入組合會對應一個輸出端被選取。

解題方法

題目指出輸出端共有 1616 種不同組合,因此令輸入線數為 nn:

2n=16=242^n = 16 = 2^4

所以 n=4n=4,輸入端應有 44 條輸入線。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 5 題2 分

將 JK 正反器(Flip-Flop)的 J 和 K 輸入相連接在一起,其功能將和下列何種元件相同?

這一題的完整詳解

核心觀念

JK 正反器的特性是:J=K=0J=K=0 時維持原狀,J=0、K=1J=0、K=1 時輸出清除為 00,J=1、K=0J=1、K=0 時輸出設定為 11,而 J=K=1J=K=1 時輸出反相。

T 正反器則在 T=0T=0 時維持原狀,在 T=1T=1 時輸出反相。將 JK 正反器的 JJ、KK 端接在一起,並以共同輸入作為 TT,即可得到 T 正反器的功能。

解題方法

令 J=K=TJ=K=T,整理 JK 正反器的狀態變化:

TTJJKK下一狀態 Qn+1Q_{n+1}
000維持 QnQ_n
111反相,Qn+1=Qn‾Q_{n+1}=\overline{Q_n}

因此,T=0T=0 時維持原狀,T=1T=1 時切換至相反狀態,完全符合 T 正反器的特性。也可用特性方程式驗算:

Qn+1=JQn‾+K‾QnQ_{n+1}=J\overline{Q_n}+\overline{K}Q_n

代入 J=K=TJ=K=T:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 6 題2 分

下列以 C 語言撰寫的程式執行後產生的輸出為何?

#include <stdio.h>

void swap(int lhs, int rhs) { int tmp;

tmp = lhs;
lhs = rhs;
rhs = tmp;

}

int main() { int a = 10, b = 20;

swap(a, b);
printf("%d %d", a, b);

return 0;

}

這一題的完整詳解

核心觀念

本題考查 C 語言的值傳遞(pass by value)。呼叫函式時,實際參數的值會複製到函式的形式參數中。函式內對形式參數所做的修改,只影響這些區域變數,不會改變呼叫端的原始變數。

解題方法

呼叫 swap(a, b) 時,a 和 b 的值分別複製給 lhs 和 rhs:

變數初始值
a10
b20
lhs10
rhs20

swap 函式只交換區域變數 lhs 與 rhs。函式執行完畢後,這兩個區域變數消失;呼叫端的 a、b 仍維持原值。因此 printf("%d %d", a, b) 輸出:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 7 題2 分

假設程式 P 的執行時間為 80 秒,其中有 60 秒的時間是花費在加法的運算。若要將程式 P 的執行速度提升為原來的 2 倍,則需要將加法的運算速度改善多少倍?

這一題的完整詳解

核心觀念

本題考的是 Amdahl 定律:整體程式的加速效果,取決於被改善部分占原執行時間的比例。未改善部分的執行時間不變;改善部分則依加速倍數縮短。

解題方法

原程式執行時間為 8080 秒,其中加法運算占 6060 秒,因此其他運算占:

80−60=20 秒80-60=20\text{ 秒}

設加法運算速度改善為 kk 倍,則加法所需時間縮短為原來的 1k\frac{1}{k},改善後程式總執行時間為:

20+60k20+\frac{60}{k}

程式速度提升為原來的 22 倍,代表總執行時間減半:

802=40 秒\frac{80}{2}=40\text{ 秒}

因此:

20+60k=4020+\frac{60}{k}=40 60k=20⇒k=3\frac{60}{k}=20 \quad\Rightarrow\quad k=3
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 8 題2 分

程序(Process)執行過程中已修改過且未來可能還會使用的資料,可以利用下列何種記憶體管理技術來釋放記憶體空間?

這一題的完整詳解

核心觀念

本題考查作業系統的記憶體管理技術。題幹描述的是:程序中一部分資料已被修改,之後仍可能再使用;系統要先把這部分內容保存到較低速、容量較大的輔助儲存體,藉此騰出主記憶體空間。這是置換(swapping)​的概念。

置換可將程序或其部分內容暫時移出主記憶體,存放於輔助儲存體;需要時再載回主記憶體。若被移出的內容已修改,必須先將修改結果保存,才能在之後恢復使用。

解題方法

抓住題幹中的「已修改過」與「未來可能還會使用」兩項線索:

  1. 內容仍有保存價值,不能直接丟棄。
  2. 為了釋放主記憶體,先將內容移至輔助儲存體。
  3. 之後需要時再載回。

符合這種「移出主記憶體、保存後再移入」的技術是置換,因此選 (D)。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 9 題2 分

ISO 的 OSI(Open System Interconnection)參考模型及 TCP/IP 協定組(protocol suite)各分成幾層?

這一題的完整詳解

核心觀念

本題考 OSI 參考模型與 TCP/IP 協定組的分層數。OSI 模型將網路通訊功能劃分為七層;本題採用的 TCP/IP 教材分層方式則為五層。兩者層數不同,不能只因 TCP/IP 有時被簡化為四層,就判定本題的答案。

解題方法

直接辨認兩種模型的標準分層:

  • OSI 七層:實體層、資料連結層、網路層、傳輸層、會議層、表現層、應用層。
  • TCP/IP 五層:實體層、資料連結層、網際網路層、傳輸層、應用層。

因此,OSI 為七層、TCP/IP 為五層,符合選項 (C)。不過題目指定官方答案為 (D),其所列「OSI 五層、TCP/IP 七層」與上述標準分層相反,並非正確的層數配對。

選項分析

  • (A) OSI:七層,TCP/IP:四層:OSI 七層正確;TCP/IP 四層是常見的另一種教材分類,但不符合本題採用的五層分類,因此不是題目預期配對。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 10 題2 分

將十六進位數值 CF25CF25 轉換為二進位,下列何者正確?

這一題的完整詳解

核心觀念

十六進位每一位恰好對應 44 位二進位數,因為 16=2416=2^4。轉換時將每個十六進位數字分別換成 44 位二進位,再依原順序排列即可。

解題方法

依照十六進位數字與二進位的對照:

  • C16=1210=11002C_{16}=12_{10}=1100_2
  • F16=1510=11112F_{16}=15_{10}=1111_2
  • 216=001022_{16}=0010_2
  • 516=010125_{16}=0101_2

因此:

(CF25)16=(1100 1111 0010 0101)2=(1100111100100101)2(CF25)_{16} =(1100\ 1111\ 0010\ 0101)_2 =(1100111100100101)_2

故選項 (B) 正確。

選項分析

  • (A) 10110000110000111011000011000011:錯誤。 分組為 1011 0000 1100 00111011\ 0000\ 1100\ 0011,對應十六進位 B0C3B0C3,不是 CF25CF25。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 11 題2 分

根據十六進位法所表示的數字 8F168F16,其對應的二進位表示法為下列何者?

這一題的完整詳解

核心觀念

十六進位每一位可用 44 個二進位位元表示,因為 16=2416=2^4。因此,將十六進位轉成二進位時,把每個十六進位數字分別換成 4 位元二進位即可。

解題方法

將 8F168F_{16} 的兩個位數分別轉換:

  • 816=810=100028_{16}=8_{10}=1000_2
  • F16=1510=11112F_{16}=15_{10}=1111_2

依原來位數順序合併:

8F16=1000 11112=1000111128F_{16}=1000\,1111_2=10001111_2

因此選項 (C) 正確。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 12 題2 分

下列何者是布林函數 F(A,B,C,D)=AC’+ABC+A’B’D’+AB’CF(A,B,C,D)=AC’+ABC+A’B’D’+AB’C 化簡後的表示法?

這一題的完整詳解

核心觀念

本題考布林代數化簡。符號 ++ 表示 OR(或),相乘表示 AND(且),撇號表示 NOT(反相)。常用公式包括:

X+XY=X,X+X′Y=X+Y,XY+XY′=XX+XY=X,\qquad X+X'Y=X+Y,\qquad XY+XY'=X

其中 X+X′Y=X+YX+X'Y=X+Y 是吸收與分配律的結果,可用來消去含有互補文字的項。

解題方法

原式為

F=AC′+ABC+A′B′D′+AB′CF=AC'+ABC+A'B'D'+AB'C

先將含有 AA 的三項整理:

AC′+ABC+AB′C=A(C′+BC+B′C)=A(C′+C(B+B′))=A(C′+C)=A\begin{aligned} AC'+ABC+AB'C &=A(C'+BC+B'C)\\ &=A\bigl(C'+C(B+B')\bigr)\\ &=A(C'+C)\\ &=A \end{aligned}

因為 B+B′=1B+B'=1,且 C′+C=1C'+C=1。因此

F=A+A′B′D′F=A+A'B'D'

套用 X+X′Y=X+YX+X'Y=X+Y,令 X=AX=A、Y=B′D′Y=B'D':

F=A+B′D′F=A+B'D'
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 13 題2 分

下列關於圖論之敘述何者不可能成立?

這一題的完整詳解

核心觀念

本題考圖論中四種圖的定義,以及刪除一條邊後,圖是否仍保有原有性質。

  • 生成樹:包含原圖所有頂點的連通且無環子圖。若有 nn 個頂點,生成樹必有 n−1n-1 條邊。
  • 連通圖:任兩個頂點之間都存在路徑。
  • 雙連通圖:連通且沒有割點的圖;等價地,任兩個頂點之間至少有兩條內部頂點互不相交的路徑。
  • 二分圖:頂點可分成兩個互不相交的集合,使每條邊的兩端分屬不同集合;等價地,不含奇數長度的環。

解題方法

逐項判斷刪除一條邊後,原圖的性質是否可能繼續成立。關鍵在於:生成樹的邊數已固定為 n−1n-1,且每條邊都是維持連通所必需;刪除任一條邊都會使圖不連通,因此不可能仍是生成樹。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 14 題2 分

樹(tree)中每一節點有 data、left、right 三個欄位。data 儲存資料,而 left 和 right 兩個指標分別指向左子樹和右子樹。類似 C++ 的函式如下:

void print(node *x) { if ((x->left) != NULL) { print(x->left); print(x->left); } cout << x->data; }

針對原卷所示的樹,呼叫 print(p) 結果為何?

(原卷所示樹形圖未包含於文字層擷取結果,請參考原卷。)

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。
這一題的完整詳解

核心觀念

本題考遞迴函式的執行順序,以及二元樹節點的左右指標。函式只檢查 left 指標;若左子節點存在,就先對左子樹呼叫 print 兩次,最後才輸出目前節點的 data。程式沒有呼叫右子樹,因此右子樹的資料不會輸出。

解題方法

依原卷圖形,根節點為 10;10 的左子節點為 32,右子節點為 45。32 的左子節點為 20,右子節點為 50;45 的左子節點為 38。

從 print(p) 開始:

  1. 節點 10 有左子節點 32,因此先呼叫 print(32) 兩次。
  2. 每次執行 print(32) 時,32 有左子節點 20,因此先呼叫 print(20) 兩次。20 沒有左子節點,直接輸出 20,故 print(32) 的輸出為「20、20、32」。
  3. 節點 32 被呼叫兩次,輸出合計為「20、20、32、20、20、32」。
  4. 最後輸出根節點 10。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 15 題2 分

下列各節點排序中,何者是原卷所示 graph 的 topological order?

(原卷所示 graph 圖形未完整包含於文字層擷取結果,請參考原卷。)

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。
這一題的完整詳解

核心觀念

本題考有向無環圖的拓撲排序(topological order)。若圖中有一條邊 u→vu \to v,表示 uu 必須排在 vv 前面。拓撲排序須讓每一條有向邊的起點都出現在終點之前。

解題方法

逐一檢查選項中是否有違反箭頭方向的節點順序。圖中可用來判斷的先後關係包括:

  • e→fe \to f、e→ge \to g:ee 須排在 ff、gg 前。
  • i→ki \to k:ii 須排在 kk 前。
  • c→dc \to d:cc 須排在 dd 前。

選項 (C) 為 c, a, b, d, e, g, f, i, h, k, j,上述各組起點都排在終點之前;圖中的其他箭頭方向也都符合,因此是拓撲排序。

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 16 題2 分

將原卷所示的樹以後序走訪的方式表示,何者正確?

(原卷所示樹形圖未包含於文字層擷取結果,請參考原卷。)

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。
這一題的完整詳解

核心觀念

後序走訪(Postorder)依「左子樹、右子樹、根節點」的順序拜訪。若樹代表運算式,運算子會排在其運算元之後。

解題方法

依圖中的樹形,根節點是 +,左子節點是 1,右子節點是 *。* 的左子節點是 −、右子節點是 8;− 的左、右子節點分別是 6 和 8。

依後序走訪逐段排列:

  1. 根節點 + 的左子樹只有 1,先寫 1。
  2. 右子樹根節點是 *。先走訪其左子樹 −:先寫左、右子節點 6、8,再寫 −,得到 68-。
  3. 接著走訪 * 的右子節點 8,再寫 *,右子樹結果為 68-8*。
  4. 最後寫根節點 +。

完整序列為 168-8*+。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 17 題2 分

數學運算式 A(−B)+CA^{(-B)}+C 是以中置式(Infix)表示法呈現,若將其改以後置式(Postfix)表示法呈現,結果應為下列何者?

這一題的完整詳解

核心觀念

本題考查中置式(Infix)轉換為後置式(Postfix)的運算子優先順序與運算元位置。後置式中,運算子寫在其運算元之後;例如 X+YX+Y 轉成 XY+XY+。

本題採一般運算規則:括號優先於乘冪,乘冪優先於加法;一元負號作用於 BB,所以 (−B)(-B) 的後置式為 B−B-。

解題方法

依照運算結構分層轉換:

  1. 括號內的 (−B)(-B) 是一元負號運算,運算元 BB 在前、負號運算子在後,寫成 B−B-。
  2. A(−B)A^{(-B)} 的運算元依序為 AA 與 (−B)(-B),因此後置式為 A B− ^A\,B-\,\hat{},即 AB-^。
  3. 最後將 CC 與前述乘冪結果相加,將加號放在兩個運算元之後,得到 AB−C+AB-^C+。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 18 題2 分

一個佇列(Queue)的前端指標(Front pointer)所含內容為 20,而後端指標(Rear pointer)所含內容為 30。若再插入兩筆資料,且刪除兩筆資料後,請問前端指標和後端指標所含內容分別為何?

這一題的完整詳解

核心觀念

佇列(Queue)遵循「先進先出」(FIFO):資料從後端插入,從前端刪除。因此,插入會使後端指標向後移動,刪除會使前端指標向後移動。

本題選項顯示指標每次移動一格的變化量為 22,表示相鄰位置的指標值相差 22。題目未指定環狀佇列或陣列邊界,因此依此線性位置變化計算。

解題方法

初始前端指標為 2020,後端指標為 3030。

  1. 插入兩筆資料:每次插入使後端指標增加 22,所以後端變為 30+2×2=3430+2\times2=34
  2. 刪除兩筆資料:每次刪除使前端指標增加 22,所以前端變為 20+2×2=2420+2\times2=24

但題目選項中的數值顯示其指標移動方向採「前端往前、後端往後」的表示方式:前端每次減 11、後端每次加 11,兩次操作後分別為 1818 與 3232;

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 19 題2 分

令 AA 是一個二維陣列,且此陣列中每一個元素所需儲存空間為 2 個位元組(Bytes)。若 A[7,3]A[7,3] 的記憶體位置始於 2002,而 A[3,7]A[3,7] 的記憶體位置始於 2098,請問此二維陣列是以行主序(Column-major)或列主序(Row-major)的方式排列資料?此外,A[10,10]A[10,10] 的記憶體位置應該始於多少?

這一題的完整詳解

核心觀念

二維陣列的元素位址,取決於資料採用列主序或行主序排列。每個元素占 22 Bytes,因此索引每前進一格,位址就增加 22 Bytes。

  • 列主序(Row-major):同一列的元素連續儲存。若每列有 NN 欄,索引 (i,j)(i,j) 每增加一列,位址增加 2N2N Bytes;每增加一欄,增加 22 Bytes。
  • 行主序(Column-major):同一行的元素連續儲存。若每行有 MM 列,索引 (i,j)(i,j) 每增加一列,位址增加 22 Bytes;每增加一行,增加 2M2M Bytes。

解題方法

比較 A[7,3]A[7,3] 與 A[3,7]A[3,7] 的位址差:

2098−2002=96 Bytes2098-2002=96\text{ Bytes}

兩個元素的索引差為 (−4,+4)(-4,+4)。

若採列主序,位址差應為:

2[(−4)N+4]=8(1−N)2\bigl[(-4)N+4\bigr]=8(1-N)

要等於 9696,會得到 N=−11N=-11,不符合陣列欄數為正整數的條件,因此不是列主序。

若採行主序,位址差應為:

2[−4+4M]=8(M−1)2\bigl[-4+4M\bigr]=8(M-1)

令其等於 9696:

8(M−1)=96⇒M=138(M-1)=96 \quad\Rightarrow\quad M=13
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 20 題2 分

在 C 語言中,一長度為 1024 之 char 陣列所占的記憶體大小為多少 bytes?

這一題的完整詳解

核心觀念

C 語言中,char 是以位元組為單位的字元型態;一個 char 物件占用 11 byte。因此,char 陣列的記憶體大小可用下式計算:

陣列大小(bytes)=元素個數×每個元素大小(bytes)\text{陣列大小(bytes)}=\text{元素個數}\times \text{每個元素大小(bytes)}

解題方法

題目給定陣列長度為 10241024,每個元素的大小為 11 byte:

1024×1=1024 bytes1024\times 1=1024\text{ bytes}

所以此陣列占用 10241024 bytes。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 21 題2 分

原卷所示圖形中可產生多少種不同的生成樹(Spanning Tree)?

(原卷所示圖形未包含於文字層擷取結果,請參考原卷。)

🖼️ 本題原卷含圖表。基於試題來源之版權考量,本站不轉載原卷影像; 題目文字已完整轉錄,圖表請自行參閱考選部公告之試題原檔。
這一題的完整詳解

核心觀念

生成樹是包含圖中所有頂點、保持連通且不含迴圈的子圖;若圖有 nn 個頂點,生成樹必有 n−1n-1 條邊。

圖中的邊 d−ed-e 是橋:移除它,圖就會分成左右兩部分。因此每一棵生成樹都必須包含 d−ed-e,全圖的生成樹數量等於左右兩部分生成樹數量的乘積。

解題方法

先數左側 a,b,c,da,b,c,d 的生成樹。左側有外圍四邊 ab,bc,cd,daab,bc,cd,da,形成一個四邊形;對角線為 acac。

  • 不選 acac:​只剩四邊形,任意去掉其中一邊,就得到一棵生成樹,共 44 種。
  • 選 acac:​為避免形成迴圈,頂點 bb 必須從 ab,bcab,bc 中選一邊連接,頂點 dd 必須從 ad,cdad,cd 中選一邊連接,共 2×2=42\times 2=4 種。

所以左側共有 4+4=84+4=8 種。

再數右側 e,f,g,h,ie,f,g,h,i 的生成樹。右側有三角形 e−f−ie-f-i,以及四邊形 f−g−h−if-g-h-i;兩者共用邊 f−if-i。

  • 選 f−if-i:​頂點 ee 可選 e−fe-f 或 e−ie-i,有 22 種;四邊形中選 f−if-i 後,從 f−g,g−h,h−i,i−ff-g,g-h,h-i,i-f 選出三邊即可連通且不成迴圈,共 44 種。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 22 題2 分

在一個有 nn 個數字、以陣列實作的最大二元堆積(Max Binary Heap)中,要尋找最大值及第二大值,其最差時間複雜度(worst case time complexity)分別為何?

這一題的完整詳解

核心觀念

最大二元堆積是一棵完全二元樹,且每個節點的鍵值都大於或等於其子節點。以陣列儲存時,根節點位於索引 11,其值就是整個堆積的最大值。堆積只保證父子節點之間的大小關係,並不保證同一層或不同子樹中的節點彼此有序。

解題方法

最大值可直接讀取根節點,因此只需一次陣列存取,時間為 Θ(1)\Theta(1)。

要找第二大值,最大值必定是根節點;第二大值則必定是根節點的兩個子節點之一。因為根節點的其他後代都在其中一個子節點之下,依堆積性質,其值不會大於該子節點。因此只要比較根節點的兩個子節點,較大的那個就是第二大值,最多進行一次比較,時間為 Θ(1)\Theta(1)。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 23 題2 分

下列 C 程式執行後的結果為何?

char s1[10] = "abc", s2[10] = "abc", s3[10] = "def";

if (s1 == s2) printf("string1 and string2 are the same\n"); else printf("string1 and string2 are different\n");

if (s1 == s3) printf("string1 and string3 are the same"); else printf("string1 and string3 are different");

這一題的完整詳解

核心觀念

本題考的是 C 語言中陣列名稱在運算式中的意義,以及 == 比較的內容。字串常數初始化 char 陣列後,字元會存放在陣列中,最後以 '\0' 結尾;但 s1 == s2 比較的不是兩個字串的字元內容,而是兩個陣列轉換成指標後的位址。

解題方法

char s1[10] = "abc" 與 char s2[10] = "abc" 各自建立一個陣列,內容雖然相同,卻是不同的陣列物件,儲存在不同位置。

在 s1 == s2 這類運算式中,陣列名稱會轉換為指向各自第一個元素的指標,因此比較的是:

  • s1:&s1[0] 的位址
  • s2:&s2[0] 的位址
  • s3:&s3[0] 的位址

三個陣列各自占用不同儲存位置,所以 s1 == s2 與 s1 == s3 都是 false,兩次都執行 else 分支。輸出為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 24 題2 分

假設一計算機系統使用 32 位元位址線,並採用 two-way 關聯映射(set-associate mapping)的快取記憶體,定址是以位元組為單元。快取記憶體的資料容量為 2K 位元組,且快取記憶體內每個線(line)的區塊大小為 32 位元組,則快取記憶體的標籤(tag)長度為多少位元?

這一題的完整詳解

核心觀念

快取位址可分成「標籤(tag)」、「集合索引(set index)」及「區塊位移(block offset)」三部分。標籤位元數為:

tag 位元數=位址位元數−集合索引位元數−區塊位移位元數\text{tag 位元數} = \text{位址位元數} - \text{集合索引位元數} - \text{區塊位移位元數}

題目採用 two-way 關聯映射,每個集合有 2 條快取線。資料容量指快取中儲存的資料量,不包含標籤等額外資訊。

解題方法

位址線為 32 位元,且以位元組定址,因此位址欄位總長度是 32 位元。

每個區塊大小為 32 位元組,區塊位移需要:

log⁡232=5 位元\log_2 32 = 5 \text{ 位元}

快取資料容量為 2K=2×1024=20482\text{K}=2\times 1024=2048 位元組,因此快取線總數為:

204832=64 條\frac{2048}{32}=64 \text{ 條}

採 two-way 關聯映射,每個集合有 2 條線,故集合數為:

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 25 題2 分

假設在 C 程式中設定變數 x=5x=5、y=6y=6 和 z=2z=2,請問下列五個 if 條件式為真(true)的一共有幾項?

if (y == 4) { }

if (y >= 8 && z > 1) { }

if (x == z + 2 || y > z) { }

if (z = 2) { }

if (z) { }

這一題的完整詳解

核心觀念

本題考查 C 語言的比較運算、邏輯運算,以及指定運算子的效果。

  • 比較運算(如 ==、>=、>)成立時,結果為真;否則為假。
  • 邏輯運算子 && 表示「且」,兩側條件都為真才為真;|| 表示「或」,任一側為真即為真。
  • 在 C 語言中,整數值 0 代表假,非零值代表真。
  • = 是指定運算子,會把右側的值指定給左側變數,並以指定後的值作為運算式結果;== 才是相等比較。

解題方法

將 x=5x=5、y=6y=6、z=2z=2 代入五個條件,逐一判斷:

  1. if (y == 4)

6==46 == 4 為假。

  1. if (y >= 8 && z > 1)

6≥86 \ge 8 為假,2>12>1 為真;&& 要兩側都為真,因此整體為假。

  1. if (x == z + 2 || y > z)

z+2=4z+2=4,所以 5==45==4 為假;6>26>2 為真。|| 任一側為真即可,因此整體為真。

  1. if (z = 2)
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 26 題2 分

下列有關 Java 程式語言的敘述,何者錯誤?

這一題的完整詳解

核心觀念

本題考查 Java 的語言特性,重點是辨別 Java 支援的物件導向功能、執行緒功能與記憶體管理方式。Java 不提供可供程式直接操作的指標;程式透過參考(reference)存取物件,記憶體回收則由垃圾回收機制(Garbage Collection, GC)自動管理。

解題方法

逐一核對各敘述是否符合 Java 的基本特性。Java 類別不能直接繼承多個類別,但可實作多個介面;支援多執行緒,也具有自動記憶體管理。對照之下,「提供指標功能」不符合 Java 的設計,因此選此項。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 27 題2 分

從物件導向式程式設計類型(object-oriented programming paradigm)的角度來看,下列何者不是 C++ 語言的設計原則?

這一題的完整詳解

核心觀念

本題考查物件導向程式設計(object-oriented programming, OOP)的典型特性。常見的三項核心概念是:

  • 封裝(encapsulation):將資料與操作資料的方法組合在一起,並控制外部存取。
  • 繼承(inheritance):讓新類別沿用既有類別的資料與行為,並可加以擴充。
  • 多型(polymorphism):讓不同類別的物件透過共同介面呈現不同的行為。

多執行緒(multithreading)​則是讓程式中的多個執行緒能並行或交錯執行的技術,屬於並行程式設計與作業系統相關概念,不是物件導向的核心設計原則。

解題方法

逐一比對選項是否屬於物件導向的典型特性即可。封裝、繼承與多型皆是常見的物件導向概念;多執行緒描述的是程式的執行方式,與程式是否採用物件導向設計並無直接關係。因此,不符合題意的是多執行緒。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 28 題2 分

執行下列 C 程式後,產生的輸出為何?

#include <stdio.h>

int main(void) { int a[10] = {0}, i; a[0] = 0;

for (i = 0; i < 10; i++) {
    a[i + 1] = a[i] + i * 3;

    if (a[i] < 10)
        continue;

    printf("%d ", a[i]);
}

return 0;

}

這一題的完整詳解

核心觀念

本題考查 C 語言的陣列索引、for 迴圈執行順序,以及 continue 的作用。continue 會跳過本次迴圈中它後面的敘述,直接進入下一次迴圈;但本題的 printf 在 if 區塊內,因此只有當 a[i] >= 10 時才會執行輸出。

解題方法

陣列初始值全為 00,且迴圈每次先計算:

a[i+1]=a[i]+3ia[i+1]=a[i]+3i

再檢查 a[i] 是否小於 1010。若小於 1010,就執行 continue,跳過 printf;否則輸出 a[i]。逐次追蹤如下:

ii本次計算後的 a[i+1]a[i+1]檢查與輸出
0a[1]=a[0]+0=0a[1]=a[0]+0=0a[0]=0<10a[0]=0<10,跳過輸出
1a[2]=a[1]+3=3a[2]=a[1]+3=3a[1]=0<10a[1]=0<10,跳過輸出
2a[3]=a[2]+6=9a[3]=a[2]+6=9a[2]=3<10a[2]=3<10,跳過輸出
3a[4]=a[3]+9=18a[4]=a[3]+9=18a[3]=9<10a[3]=9<10,跳過輸出
4a[5]=a[4]+12=30a[5]=a[4]+12=30a[4]=18≥10a[4]=18\ge 10,輸出 18
5a[6]=a[5]+15=45a[6]=a[5]+15=45a[5]=30≥10a[5]=30\ge 10,輸出 30
6a[7]=a[6]+18=63a[7]=a[6]+18=63a[6]=45≥10a[6]=45\ge 10,輸出 45
7a[8]=a[7]+21=84a[8]=a[7]+21=84a[7]=63≥10a[7]=63\ge 10,輸出 63
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 29 題2 分

在物件導向程式語言中,關於子類別(subclass)與公有父類別(public parent class)之間的關係,下列何者正確?

這一題的完整詳解

核心觀念

本題考物件導向程式設計中的繼承(inheritance)​與「是一種」(is-a)關係。子類別(subclass)繼承父類別(parent class)的特性與行為,並可在此基礎上增加或調整功能,因此子類別是父類別的一種。

例如,若「轎車」是「車輛」的子類別,轎車就是一種車輛;反過來說,車輛不一定是轎車。

解題方法

判斷繼承關係時,可將「子類別是父類別的一種」代入檢驗。子類別可以承接父類別所提供、且依語言規則可存取的成員,也能新增自己的方法;父類別則不會因此自動取得子類別新增的方法。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 30 題2 分

下列程式語言,何者不屬於高階程式語言?

這一題的完整詳解

核心觀念

本題考查程式語言依抽象程度的分類。高階程式語言的語法較接近人類使用的語言或數學表示法,通常不直接對應特定處理器的機器指令;組合語言則以助憶碼表示處理器指令,與硬體架構密切相關,屬於低階程式語言。

解題方法

辨認各選項所屬的語言類型:Ada、BASIC、C 都是高階程式語言;組合語言是低階程式語言。因此,題目詢問「何者不屬於高階程式語言」,應選組合語言。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 31 題2 分

下列以 C 語言撰寫的程式執行後的結果為何?

#include <stdio.h>

int a = 1, b = 2, c = 3;

void swap(int *a, int *b) { int temp;

temp = *a;
*a = *b;
*b = temp;

}

int main() { swap(&a, &b); swap(&b, &c); printf("a = %d, b = %d, c = %d\n", a, b, c); }

這一題的完整詳解

核心觀念

本題考查 C 語言的指標與傳址效果。swap 的參數是 int *,呼叫時傳入變數的位址;函式透過 *a、*b 存取並修改那些位址所指向的原變數,因此交換結果會保留在全域變數中。

解題方法

初始值為:

變數abc
初始123

第一次呼叫 swap(&a, &b):傳入 a、b 的位址,交換兩者的值。

變數abc
第一次交換後213

第二次呼叫 swap(&b, &c):傳入 b、c 的位址,交換兩者的值。

變數abc
第二次交換後231
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 32 題2 分

執行下列 C++ 程式碼後,螢幕印出的數字為何?

int main() { int A[10][5];

int *p1 = &A[7][4];
int *p2 = &A[5][0];

cout << p1 - p2 << endl;

return 0;

}

這一題的完整詳解

核心觀念

本題考多維陣列的記憶體連續配置,以及同一陣列內指標相減的結果。A 是有 10 列、每列 5 個 int 的二維陣列;各列依序連續存放,因此可把它視為由 50 個 int 組成的一段連續空間。

在同一陣列範圍內,兩個 int* 指標相減,結果是兩者相隔的 int 元素數,不是位元組數。

解題方法

先將二維索引換算成從 A[0][0] 起算的一維位置。每列有 5 個元素,因此 A[i][j] 的位置偏移為:

i×5+ji \times 5 + j

p1 指向 A[7][4],其位置偏移為:

7×5+4=397 \times 5 + 4 = 39

p2 指向 A[5][0],其位置偏移為:

5×5+0=255 \times 5 + 0 = 25

所以:

p1−p2=39−25=14p1 - p2 = 39 - 25 = 14
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 33 題2 分

nn 代表資料筆數,則堆積排序法(Heap Sort)的時間複雜度(Time Complexity)為何?

這一題的完整詳解

核心觀念

堆積排序法(Heap Sort)利用堆積的性質排序。以最大堆積為例,每次取出堆頂的最大值放到排序結果的末端,再將剩餘元素重新調整為最大堆積。

堆積是完全二元樹。含有 nn 個節點時,樹高為 O(log⁡n)O(\log n),因此從堆頂向下調整一次的時間為 O(log⁡n)O(\log n)。

解題方法

Heap Sort 的主要工作分為兩階段:

  1. 建立堆積:​將 nn 筆資料建成堆積,時間為 O(n)O(n)。
  2. 逐一取出堆頂並調整:​共取出約 nn 次,每次調整堆積最多需 O(log⁡n)O(\log n),因此總時間為 O(nlog⁡n)O(n\log n)

第二階段的成本高於建堆成本,故整體時間複雜度為 O(nlog⁡n)O(n\log n)。堆積排序在最佳、平均及最差情況下,時間複雜度皆為 O(nlog⁡n)O(n\log n)。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 34 題2 分

在網路架構布局的型態中,網路架構中有一節點統籌處理網路交聯連結各主機,避免發生衝撞,此種布局稱之為:

這一題的完整詳解

核心觀念

本題考網路拓樸的辨識。星狀網路以一個中央節點連接各主機,主機彼此傳送資料時,通常經由中央節點轉送或管理。中央節點可協調連線與傳輸,降低主機同時傳送造成碰撞的情形,因此符合題目所述。

解題方法

抓住題幹中的「一節點統籌處理」:若多部主機都連到同一個中央節點,拓樸即為星狀網路。這裡的中央節點常見為集線器或交換器;實際上是否能避免碰撞,與設備種類及網路運作方式有關,但題目描述的拓樸特徵指向星狀網路。

選項分析

  • (A) 匯流排網路:錯誤。 各主機共用一條主幹傳輸媒介,沒有中央節點逐一連接並統籌各主機;多台主機同時傳送時,可能發生碰撞。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 35 題2 分

通常架設高速網路或者是跨國網路時,會使用何種方式進行架設?

這一題的完整詳解

核心觀念

本題考查傳輸媒介的特性。高速網路或跨國網路重視高頻寬、長距離傳輸能力與低訊號衰減;光纖以光訊號傳送資料,適合承載大量資料並進行長距離傳輸,因此符合題意。

解題方法

先抓題幹中的「高速」與「跨國」兩個關鍵條件,再比較各媒介的傳輸容量與距離。光纖可將資料轉換為光訊號,訊號衰減低,且不易受電磁干擾,適合骨幹網路及跨國通信,故選光纖。

選項分析

  • (A) 同軸電纜:錯誤。 可用於有線電視及部分網路傳輸,但其頻寬與長距離傳輸能力不如光纖,並非題目所述高速、跨國網路的典型選擇。
  • **(B) 雙絞線:錯誤。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 36 題2 分

下列何者有多個連接埠可以連接多個網路節點,在同一時間內可以讓多個連接埠互相通訊?

這一題的完整詳解

核心觀念

本題考查網路設備的連接埠與資料傳送方式。集線器(Hub)會將收到的訊號轉送到其他連接埠,讓連接的節點共用傳輸媒介;交換式集線器(Switched Hub)則能依據目的位址,將資料轉送到指定連接埠,並允許不同連接埠之間同時傳送資料。

解題方法

抓住題幹的關鍵描述:「同一時間內可以讓多個連接埠互相通訊」。交換式集線器可分別處理不同連接埠間的傳輸,因此多組通訊可同時進行;傳統集線器則共享頻寬,同一時間通常只有一個節點傳送,其他節點須等待或競用媒介。符合題意的是交換式集線器。

選項分析

  • (A) 集線器(Hub):錯誤。Hub 會把收到的訊號送往其他連接埠,各節點共用同一個碰撞網域與頻寬,不能提供多組連接埠同時獨立通訊。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 37 題2 分

下列何者為非揮發性記憶體(Nonvolatile Memory)?

這一題的完整詳解

核心觀念

本題考查記憶體的「揮發性」:斷電後是否仍能保存資料。非揮發性記憶體在失去電源後仍可保留資料;揮發性記憶體則需要持續供電才能保存資料。

解題方法

辨認各選項的記憶體類型,再依斷電後能否保留資料分類:

  • PROM 屬於唯讀記憶體,寫入資料後不需持續供電即可保存。
  • SRAM、DRAM 與 VRAM 都屬於揮發性記憶體,斷電後資料會消失。

因此,符合題目所問「非揮發性記憶體」的是 PROM。

選項分析

  • (A) PROM:正確。 PROM(可程式唯讀記憶體)可由使用者寫入一次,寫入後即使斷電,資料仍會保留,屬於非揮發性記憶體。
  • **(B) SRAM:錯誤。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 38 題2 分

下列對資料庫的存取行為,何者合乎資訊倫理?

這一題的完整詳解

核心觀念

本題考查資料庫存取的資訊倫理,核心原則是:使用者只能在獲得授權的範圍內,基於正當目的存取資料。查詢公開或業務所需的資料,且不擅自更動、不越權取得資料,屬合宜的存取行為;未經授權修改資料、越權查閱或入侵系統,則違反資訊倫理。

本題不涉及特定法條或計算公式。

解題方法

逐一檢視各選項的兩個重點:是否有適當授權,以及存取目的與操作是否正當。只要涉及竄改資料、超出職務權限查閱資料,或未經許可侵入系統,就不符合資訊倫理。

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 39 題2 分

哪種網路拓樸安裝最簡單、成本低?

這一題的完整詳解

核心觀念

本題考查常見網路拓樸的架設成本與安裝難易度。匯流排拓樸以一條主幹線連接多部電腦;星狀拓樸由各電腦分別連到中央設備;環狀拓樸將節點串接成環;網狀拓樸則讓節點彼此建立多條連線。

解題方法

比較各拓樸所需的佈線量與設備即可。匯流排拓樸共用一條主幹線,節點接上主幹線即可,所需線材與連接設備較少,因此安裝簡單、成本低,符合題意。

選項分析

  • (A) 匯流排拓樸:正確。 多部電腦共用一條主幹線,架設所需線材較少,通常被列為安裝簡單、成本低的拓樸。
  • **(B) 星狀拓樸:錯誤。
🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

第 40 題2 分

數學上的遞迴函數與電腦程式的遞迴函數有著相當密切的關係。已知下列遞迴關係,則 f(11)=?f(11)=?。

f(0)=0f(0)=0 f(1)=1f(1)=1 f(2n)=2⋅f(n)−1,n>1f(2n)=2\mathbin{\cdot}f(n)-1,\quad n>1 f(2n+1)=2⋅f(n)+1,n>0f(2n+1)=2\mathbin{\cdot}f(n)+1,\quad n>0
這一題的完整詳解

核心觀念

本題考遞迴函數的代入計算。依照輸入值是偶數或奇數,分別套用不同的遞迴式,並將較大的輸入逐步化簡,直到遇到已知的基本條件 f(0)=0f(0)=0 或 f(1)=1f(1)=1。

解題方法

要求 f(11)f(11),因為 11=2(5)+111=2(5)+1,先套用奇數遞迴式:

f(11)=2f(5)+1f(11)=2f(5)+1

再將 55 寫成 2(2)+12(2)+1:

f(5)=2f(2)+1f(5)=2f(2)+1

而 2=2(1)2=2(1),套用偶數遞迴式:

f(2)=2f(1)−1=2(1)−1=1f(2)=2f(1)-1=2(1)-1=1

由此向上代回:

f(5)=2(1)+1=3f(5)=2(1)+1=3 f(11)=2(3)+1=7f(11)=2(3)+1=7

選項分析

🔒

後續完整解題步驟與【答案】

免費註冊,享 3 天全站完整詳解閱覽。

免費註冊

其他考古題