111 身心障礙特考四等 電子工程 計算機概要 考古題詳解

111 年・身心障礙特考・四等・電子工程
試題代碼 計算機概要

第 1 題2 分

透過下列那一種機制,可讓記憶體和硬碟之間的大量資料轉移的工作,不需要依賴中央處理器去逐筆處理?

這一題的完整詳解

核心觀念

本題考「直接記憶體存取」(Direct Memory Access, DMA)。DMA 控制器可在周邊裝置與主記憶體之間直接傳送資料,中央處理器(CPU)負責設定傳送的起始位置、方向與資料量,傳送期間不必逐筆搬移資料,完成後再由 DMA 控制器通知 CPU。

解題方法

題幹的關鍵是「大量資料轉移」以及「不需要依賴中央處理器去逐筆處理」。能讓資料在裝置與記憶體間直接傳送、減少 CPU 逐筆介入的機制,就是 DMA。

選項分析

  • (A) I/O 映射 I/O(I/O-mapped I/O):錯誤。 這是配置 I/O 裝置位址空間的方式,CPU 透過專用的 I/O 指令讀寫裝置;它本身不會讓資料在裝置與記憶體間自動大量傳送。
  • **(B) 記憶體映射 I/O(memory-mapped I/O):錯誤。
🔒

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

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

免費註冊

第 2 題2 分

某處理器的指令運算碼(operation code)長度為 77 個位元,該運算碼最多可解碼出幾種不同的指令?

這一題的完整詳解

核心觀念

運算碼(operation code,opcode)用來表示指令種類。若運算碼長度為 nn 個位元,每個位元各有 00、11 兩種狀態,因此可組成 2n2^n 種不同的位元組合。

解題方法

本題的運算碼長度為 77 位元,套用公式:

27=1282^7 = 128

因此,最多可解碼出 128128 種不同的指令。

選項分析

🔒

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

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

免費註冊

第 3 題2 分

下列技術,何者可以協助電腦系統實現虛擬記憶體?

這一題的完整詳解

核心觀念

本題考查實現虛擬記憶體(Virtual Memory)的基本機制。虛擬記憶體讓程式使用的位址空間可以大於實際安裝的主記憶體;作業系統與硬體會將虛擬位址對應到實體記憶體中的位置。常見的實作方式是分頁(Paging)。

解題方法

判斷各選項是否負責「把虛擬位址空間映射到實體記憶體,並在需要時管理資料載入」即可。分頁將虛擬位址空間切成固定大小的頁(page),將實體記憶體切成相同大小的頁框(frame),再透過頁表記錄頁與頁框的對應關係。

當程式要存取的頁不在主記憶體時,作業系統可將所需頁從輔助儲存裝置載入主記憶體,並更新頁表。因此,分頁能支援虛擬記憶體。

選項分析

🔒

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

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

免費註冊

第 4 題2 分

將十進制含有小數點的數字 0.6250.625 用二進制表示,答案為:

這一題的完整詳解

核心觀念

這題考查十進制小數轉換為二進制。二進制小數點後各位的位值依序為 12,14,18,116,132,…\frac{1}{2},\frac{1}{4},\frac{1}{8},\frac{1}{16},\frac{1}{32},\ldots;也可反覆將小數部分乘以 22,每次乘積的整數部分依序就是二進制小數位。

解題方法

將 0.6250.625 的小數部分反覆乘以 22,取每次乘積的整數部分:

0.625×2=1.25⇒10.25×2=0.5⇒00.5×2=1.0⇒1\begin{aligned} 0.625 \times 2 &= 1.25 &&\Rightarrow 1\\ 0.25 \times 2 &= 0.5 &&\Rightarrow 0\\ 0.5 \times 2 &= 1.0 &&\Rightarrow 1 \end{aligned}

依序讀取整數部分,得到二進制小數 0.1010.101。題目選項皆寫成五位小數,補上末尾的零後為 0.101000.10100。

也可用位值驗算:

🔒

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

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

免費註冊

第 5 題2 分

將三進位數值 (2012)3(2012)_3 轉換為九進位數值表示,下列何者正確?

這一題的完整詳解

核心觀念

進位制轉換可利用 9=329=3^2,將三進位數每兩位一組分段,直接轉成九進位。分組時由小數點往左,每兩位一組;不足兩位時在左側補零。

解題方法

將 (2012)3(2012)_3 從右側開始每兩位分組:

(2012)3=(20 12)3(2012)_3=(20\ 12)_3

每組分別換算成十進位數值。三進位的「20」代表 2×3+0=62\times 3+0=6,「12」代表 1×3+2=51\times 3+2=5。因此:

(2012)3=(65)9(2012)_3=(65)_9

選項分析

  • (A) (65)9(65)_9:正確。 兩位一組換算後依序為 66、55,得到 (65)9(65)_9。
  • (B) (67)9(67)_9:錯誤。 「12」的三進位值為 1×3+2=51\times3+2=5,不是 77。
🔒

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

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

免費註冊

第 6 題2 分

若要用同樣數量的位元來描述 100100 種不同狀態中的任一狀態,則至少要用多少個位元才足夠?

這一題的完整詳解

核心觀念

nn 個位元共有 2n2^n 種不同的組合,因此要表示 100100 種狀態,必須找到最小的整數 nn,使得 2n≥1002^n \ge 100。

解題方法

比較相鄰的 2 的次方:

26=64<100,27=128≥1002^6 = 64 < 100,\qquad 2^7 = 128 \ge 100

6 個位元只能表示 64 種狀態,不足以涵蓋 100 種;7 個位元可表示 128 種,足以涵蓋。因此至少需要 7 個位元。

選項分析

🔒

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

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

免費註冊

第 7 題2 分

下列那一個布林運算式與(F=A xor B\text{F} = \text{A xor B})完全等效?

這一題的完整詳解

核心觀念

互斥或(XOR,exclusive OR)在兩個輸入不同時輸出 11,相同時輸出 00。因此:

Axor⁡B=(¬A∧B)∨(A∧¬B)A \operatorname{xor} B = (\neg A \land B)\lor(A\land\neg B)

其中 ¬\neg 表示 NOT、∧\land 表示 AND、∨\lor 表示 OR。

解題方法

依照 XOR 的定義,列出兩種輸入不同的情況:

  • A=0, B=1A=0,\ B=1:輸出 11,對應 ¬A∧B\neg A\land B。
  • A=1, B=0A=1,\ B=0:輸出 11,對應 A∧¬BA\land\neg B。

兩種情況以 OR 合併,得到:

F=(¬A∧B)∨(A∧¬B)F=(\neg A\land B)\lor(A\land\neg B)

這正是選項 (B)。

選項分析

  • (A) 錯誤。 依德摩根定律,
(¬A∨B)∧(A∨¬B)=A↔B(\neg A\lor B)\land(A\lor\neg B)=A\leftrightarrow B
🔒

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

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

免費註冊

第 8 題2 分

對 1011011010110110 按位元進行 NOT\text{NOT} 的運算,結果為下列何者?

這一題的完整詳解

核心觀念

位元 NOT(反相)會將每個位元個別取反:00 變成 11,11 變成 00。它不會改變位元數,也不涉及進位。

解題方法

將原數 1011011010110110 的每一位分別反相:

10110110↓↓↓↓↓↓↓↓01001001\begin{array}{cccccccc} 1&0&1&1&0&1&1&0\\ \downarrow&\downarrow&\downarrow&\downarrow&\downarrow&\downarrow&\downarrow&\downarrow\\ 0&1&0&0&1&0&0&1 \end{array}
🔒

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

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

免費註冊

第 9 題2 分

有關作業系統中的 Critical section problem,主要是在討論:

這一題的完整詳解

核心觀念

Critical section(臨界區)是行程中會存取共享資料或共享資源的程式區段。當多個行程同時執行時,若未妥善協調,可能發生資料不一致或競爭情況。

因此,Critical section problem(臨界區問題)主要探討如何同步多個行程,讓它們安全地存取共享資源,屬於行程同步(Process synchronization)的範疇。常見的解決機制包括互斥鎖、信號量與監視器。

解題方法

辨認題目中的關鍵詞「Critical section problem」:臨界區涉及多個行程競爭使用共享資源,核心在於協調行程執行順序與資源存取。這正是行程同步所處理的問題,故選 Process synchronization。

選項分析

🔒

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

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

免費註冊

第 10 題2 分

當一個程序(Process)得到 CPU 控制權後,可以被更高優先權的程序暫時暫停,是下列那一種作業系統的排程策略?

這一題的完整詳解

核心觀念

本題考查作業系統的 可搶先排程(Preemptive Scheduling)。若目前執行中的程序可以因更高優先權程序到達,或其他排程條件成立,而被作業系統暫停並讓出 CPU,這種排程方式稱為可搶先排程。

相對地,**不可搶先排程(Non-Preemptive Scheduling)**中,程序取得 CPU 後,通常會持續執行到結束或主動交出 CPU,排程器不會因另一個程序優先權較高就強制中斷它。

解題方法

題幹的關鍵是「得到 CPU 控制權後,可以被更高優先權的程序暫時暫停」。這表示執行中的程序可被作業系統強制中斷,CPU 改由優先權較高的程序使用,符合可搶先排程的定義。

選項分析

  • **(A) 先到先做排程(FCFS)錯誤:**依程序到達就緒佇列的先後順序分配 CPU,通常屬於不可搶先排程;較晚到達的高優先權程序不會因此中斷目前程序。
🔒

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

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

免費註冊

第 11 題2 分

某處理器為具有 55 個 stages 的管線式處理器,各管線階級(pipeline stage)分別為 instruction fetch (IF), instruction decode (ID), execution (EX), memory (MEM), write back (WB)。各 stage 所需的運算時間分別如下: IF: 2.5 ns2.5\text{ ns} ID: 1.0 ns1.0\text{ ns} EX: 1.5 ns1.5\text{ ns} MEM: 4 ns4\text{ ns} WB: 3.0 ns3.0\text{ ns}

則該處理器可執行的最快時脈頻率為何?

這一題的完整詳解

核心觀念

管線處理器每個時脈週期推進一個 stage。時脈週期必須足以容納最慢的 pipeline stage,因此最短時脈週期為各 stage 運算時間中的最大值:

Tclock=max⁡(TIF,TID,TEX,TMEM,TWB)T_{\text{clock}}=\max(T_{\text{IF}},T_{\text{ID}},T_{\text{EX}},T_{\text{MEM}},T_{\text{WB}})

時脈頻率與時脈週期互為倒數:f=1/Tclockf=1/T_{\text{clock}}。

解題方法

題目各 stage 的運算時間為 2.5、1.0、1.5、4.0、3.0 ns2.5、1.0、1.5、4.0、3.0\text{ ns}。其中最慢的是 MEM stage,需 4.0 ns4.0\text{ ns},所以時脈週期至少為:

Tclock=4.0 nsT_{\text{clock}}=4.0\text{ ns}

換算頻率:

fmax⁡=14.0 ns=14.0×10−9 s=0.25×109 Hz=0.25 GHzf_{\max}=\frac{1}{4.0\text{ ns}} =\frac{1}{4.0\times 10^{-9}\text{ s}} =0.25\times 10^9\text{ Hz} =0.25\text{ GHz}
🔒

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

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

免費註冊

第 12 題2 分

一般而言,增加管線階級(Pipeline stages)數,可以造成下列何種結果?

這一題的完整詳解

核心觀念

本題考查管線處理器(Pipeline)的階段數與時脈頻率。管線會把指令執行工作切分為多個階段,例如取指、解碼、執行與寫回,讓多條指令能在不同階段重疊執行。

在其他條件相同時,階段切分得更細,每一階段需要完成的工作通常較少,因而有機會縮短最慢階段的延遲。時脈週期需足以容納最慢階段的延遲,因此可用較短的時脈週期運作,提升處理器時脈頻率。

解題方法

抓住「增加管線階段數」的直接效果:工作切得更細,理想情況下可縮短單一階段的延遲,讓時脈週期縮短、時脈頻率提高。時脈頻率與時脈週期互為倒數:

f=1Tf=\frac{1}{T}

因此,時脈週期縮短時,時脈頻率提高,對應選項 (A)。

選項分析

🔒

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

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

免費註冊

第 13 題2 分

在 UNIX 系統中,fork() 這個系統呼叫的作用為何?

這一題的完整詳解

核心觀念

本題考查 UNIX 系統呼叫 fork 的功能。fork 會建立一個新的子程序(child process),原本呼叫它的程序則成為父程序(parent process)。

子程序會以父程序的執行狀態為基礎開始執行;fork 在父、子程序中都會返回,但返回值不同:父程序取得子程序的程序識別碼(PID),子程序則取得 0。

解題方法

辨認系統呼叫的名稱與功能即可。題目問 fork 的作用,關鍵是將它和「建立程序」連結:執行 fork 後,系統會新增一個子程序,因此選擇「產生子程序」的選項。

選項分析

🔒

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

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

免費註冊

第 14 題2 分

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

#include<stdio.h> main() { int a[] = {3, 0}; int b[] = {1, 2, 3, 10};

printf("%d", b[1]/a[1]);

}

這一題的完整詳解

核心觀念

本題考查陣列索引、整數除法與除數為零的執行錯誤。

陣列索引從 00 開始,因此 a[1] 是陣列 a 的第二個元素,值為 00;b[1] 也是第二個元素,值為 22。兩者皆為 int,相除時會進行整數除法;但整數不能除以 00。

解題方法

依序代入陣列元素:

  • a[1] = 0
  • b[1] = 2

所以 printf 中的運算式為:

b[1]/a[1]=2/0\texttt{b[1]/a[1]} = 2/0

除數為 00,程式在執行這個除法時會發生錯誤,因此不會正常輸出數值。

選項分析

🔒

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

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

免費註冊

第 15 題2 分

對一個堆疊(Stack)可以執行推入(Push)、彈出(Pop)和清空(Empty)等基本運算。現在接連對一個空堆疊連續執行推入 A、推入 B、清空、推入 C、推入 D、推入 E、彈出,最後執行推入 F。在執行以上運算後,堆疊中共存在多少元素?

這一題的完整詳解

核心觀念

堆疊(Stack)採用「後進先出」(LIFO)原則:最後推入的元素會最先彈出。清空(Empty)會移除堆疊中的所有元素,使堆疊回到空狀態。

解題方法

依序追蹤每個運算後堆疊內的元素:

運算堆疊內容(底部 → 頂端)
初始為空空
推入 AA
推入 BA、B
清空空
推入 CC
推入 DC、D
推入 EC、D、E
彈出C、D
推入 FC、D、F
🔒

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

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

免費註冊

第 16 題2 分

在一個圖(Graph)中進行深度優先搜尋(Depth-first Search),應使用下列那種資料結構設計,可使得搜尋的過程最符合深度優先的順序?

這一題的完整詳解

核心觀念

深度優先搜尋(Depth-first Search, DFS)會從起點沿著尚未搜尋的相鄰節點一路往下探索;遇到沒有未訪問鄰點的節點時,便回到上一個尚有未探索路徑的節點。

堆疊(Stack)採用「後進先出」(LIFO)原則,最近走到的節點會最先取出,因此能自然保留 DFS 回溯所需的順序。

解題方法

判斷搜尋方式與資料結構的配合:

  • 深度優先:沿路深入,必要時回溯,使用堆疊。
  • 廣度優先:先搜尋同一層的所有節點,使用佇列。

因此,本題要選擇能符合「一路深入、再回溯」順序的資料結構,即堆疊。

選項分析

🔒

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

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

免費註冊

第 17 題2 分

下列何者是平衡樹(Balanced Tree)?

這一題的完整詳解

核心觀念

本題考「平衡樹」的定義。平衡樹是透過限制左右子樹高度差,避免樹的高度過度偏斜,讓搜尋、插入與刪除等操作維持良好效率。AVL tree 是一種自我平衡的二元搜尋樹;其每個節點的左右子樹高度差至多為 11。

解題方法

辨認選項是否明確以維持樹的高度平衡為設計條件。AVL tree 具有高度平衡規則,當插入或刪除造成失衡時,會透過旋轉恢復平衡,因此符合平衡樹的定義。

選項分析

  • (A) AVL tree:正確。 AVL tree 是經典的平衡二元搜尋樹,透過限制每個節點左右子樹的高度差來維持平衡。
  • **(B) Binary Search Tree:錯誤。
🔒

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

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

免費註冊

第 18 題2 分

(A×B+C)+D×E(A \times B + C) + D \times E 之前序式表示法為何?

這一題的完整詳解

核心觀念

本題考「中序式轉前序式」。中序式的運算子寫在運算元之間;前序式則把運算子放在所屬運算元或子運算式之前。依運算子優先順序,乘法高於加法;括號內先視為一個完整子運算式。

解題方法

原式為 (A×B+C)+D×E(A \times B + C) + D \times E。

  1. 括號內 A×B+CA \times B + C,先算 A×BA \times B,再與 CC 相加,因此前序式為 +×ABC+ \times ABC。
  2. 右側 D×ED \times E 的前序式為 ×DE\times DE。
  3. 最外層是加法,將左、右兩個子運算式依序接在 ++ 後:
+  (+  (×  A  B)  C)  (×  D  E)+ \; (+ \; (\times \; A \; B) \; C) \; (\times \; D \; E)

去除括號與空格後,得到:

++×ABC×DE++\times ABC\times DE

選項分析

🔒

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

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

免費註冊

第 19 題2 分

Dijkstra 演算法是一很有名的找出最短路徑演算法,根據其方法特性,屬於下列何類演算法?

這一題的完整詳解

核心觀念

本題考查 Dijkstra 演算法的分類。Dijkstra 演算法用來求解帶有非負權重圖形中的單一起點最短路徑問題,採取逐步確定最短距離的方式,並利用已求得的子問題結果擴展到下一個節點,屬於動態規劃演算法。

解題方法

從演算法的解題特性判斷:Dijkstra 會維護各節點目前已知的最短距離,每次選取尚未確定且距離最小的節點,再用它更新相鄰節點的距離。其距離更新可寫為:

d(v)=min⁡(d(v), d(u)+w(u,v))d(v) = \min\bigl(d(v),\ d(u)+w(u,v)\bigr)

其中 d(u)d(u)、d(v)d(v) 是起點到節點的目前距離,w(u,v)w(u,v) 是邊 (u,v)(u,v) 的權重。演算法將已確定的子問題結果用於後續更新,因此本題依官方分類選擇動態規劃。

選項分析

  • **(A) Dynamic Programming Algorithm:正確。
🔒

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

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

免費註冊

第 20 題2 分

從圖中的節點 a 開始進行廣度優先搜尋(Breadth first search,簡稱 BFS),產生的廣度優先擴張樹(BFS spanning tree)可能為下列何者? 🖼️【此處有附圖,請對照原卷】

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

核心觀念

本題考查廣度優先搜尋(BFS)與 BFS spanning tree 的層級概念。

BFS 從起點 aa 出發時,會依照「距離起點的最短邊數」逐層拜訪:

  • 第 00 層:起點 aa
  • 第 11 層:與 aa 直接相連的節點
  • 第 22 層:由第 11 層節點首次拜訪的節點
  • 第 33 層:由第 22 層節點首次拜訪的節點

BFS spanning tree 必須同時符合:

  1. 包含原圖所有節點。
  2. 為一棵樹,不能有循環。
  3. 每個節點在樹中的深度,必須等於該節點由起點 aa 出發的最短距離。
  4. 同一層節點的拜訪順序可以不同,因此 BFS 樹不一定唯一。

解題方法

依原圖可判斷:

  • 起點 aa 直接連接左上與左下兩個節點,這兩個節點必須位於第 11 層。
  • 左上節點所連接的上方及中間節點,以及左下節點所連接的中下方及下方節點,位於第 22 層。
  • 最右側節點可由第 22 層的任一適當節點拜訪,因此位於第 33 層。

因此,正確的 BFS 樹應呈現:

a→第1層兩節點→第2層四節點→最右側第3層節點a \rightarrow \text{第1層兩節點} \rightarrow \text{第2層四節點} \rightarrow \text{最右側第3層節點}
🔒

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

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

免費註冊

第 21 題2 分

將下列六個整數依下列步驟由小到大排序的演算法為何? 原始資料 9 8 6 10 9 3 第一次比序並交換位置後 8 6 9 9 3 10 第二次比序並交換位置後 6 8 9 3 9 10 第三次比序並交換位置後 6 8 3 9 9 10 第四次比序並交換位置後 6 3 8 9 9 10 第五次比序並交換位置後 3 6 8 9 9 10

這一題的完整詳解

核心觀念

本題考辨認排序演算法。**氣泡排序(bubble sort)**會反覆比較相鄰兩個元素;若順序不符,就交換位置。每一趟比較後,較大的元素會逐步往右移,完整一趟後,該趟最大的元素到達未排序部分的最右端。

解題方法

觀察各次結果中的相鄰交換:

  • 原始資料:9, 8, 6, 10, 9, 39,\ 8,\ 6,\ 10,\ 9,\ 3
  • 第一次後:8, 6, 9, 9, 3, 108,\ 6,\ 9,\ 9,\ 3,\ 10 大數 1010 往右移到末端,顯示它經過相鄰比較與交換。
  • 第二次後:6, 8, 9, 3, 9, 106,\ 8,\ 9,\ 3,\ 9,\ 10 99 往右移到尚未排序部分的末端。
  • 第三次後:6, 8, 3, 9, 9, 106,\ 8,\ 3,\ 9,\ 9,\ 10
  • 第四次後:6, 3, 8, 9, 9, 106,\ 3,\ 8,\ 9,\ 9,\ 10
  • 第五次後:3, 6, 8, 9, 9, 103,\ 6,\ 8,\ 9,\ 9,\ 10

每次比序都透過相鄰元素交換,較大的元素逐步向右移;這正是氣泡排序的特徵,因此符合官方答案 (D)。

🔒

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

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

免費註冊

第 22 題2 分

搜尋未排序的串列,應使用那種搜尋法?

這一題的完整詳解

核心觀念

本題考查搜尋法的適用條件。搜尋未排序的串列時,沒有大小順序可供判斷目標在前半段或後半段,因此需從串列的一端開始,逐一比對元素;這種方法稱為循序搜尋法(Sequential Search),也稱線性搜尋法。

解題方法

先確認串列是否已排序。未排序的資料無法使用排序所提供的方向資訊來縮小搜尋範圍,因此由第一個元素開始依序比對,找到目標即停止;若比對至末端仍未找到,則表示目標不在串列中。這正是循序搜尋法的做法。

選項分析

🔒

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

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

免費註冊

第 23 題2 分

假設要撰寫一個 C 程式來處理學生資料,而每一個學生有兩類資料,第一類為其姓名、型態為字串,第二類為其班級排名、型態為整數,則應該使用 C 語言的何種型態來表示每一筆學生資料最合適?

這一題的完整詳解

核心觀念

本題考查 C 語言中如何將不同型態、但屬於同一筆資料的欄位組合在一起。

struct(結構)可將多個欄位組成一筆資料,欄位可使用不同型態。學生資料同時包含姓名字串與班級排名整數,適合以結構表示。

解題方法

先判斷姓名與排名是否要同時保存在每筆學生資料中:姓名與排名都是學生資料的一部分,兩者需要同時存在,因此應選能將多個欄位一起組合的 struct。

例如:

struct Student {
 char name[50];
 int rank;
};

其中 name 儲存姓名字串,rank 儲存班級排名整數;一個 struct Student 即代表一筆學生資料。

選項分析

🔒

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

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

免費註冊

第 24 題2 分

若是一個高階程式語言支援強型態(strong typing),有關其程式特性的敘述,下列何者錯誤?

這一題的完整詳解

核心觀念

強型態(strong typing)重視程式執行時的型態安全:運算與資料使用須符合型態規則,避免不合理的型態混用。許多強型態語言會在編譯階段檢查型態,但「強型態」不代表所有型態錯誤都必然在編譯時發現,也不直接決定程式的執行速度。

解題方法

先辨認各選項描述的是型態與程式結構的關係,還是執行效率。強型態主要規範型態使用的一致性;執行時間則受語言實作、編譯器最佳化、執行環境等因素影響,不能單憑強弱型態判定。故將「強型態通常執行較久」視為必然特性,即為錯誤敘述。

選項分析

🔒

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

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

免費註冊

第 25 題2 分

如下所示之 C 程式,其輸出為下列何者?

#include<stdio.h> int func(int a, int b) { int p; if (b == 0) return 1; p = func (a, b / 2); p *= p; return (b % 2) ? a * p : p; } int main(int argc, char *argv) { printf("%d\n", func(2, 11)); return 0; }

這一題的完整詳解

核心觀念

本題考遞迴函式與整數除法、取餘數的運算,並利用平方遞迴計算次方。對正整數 bb,C 語言的整數除法 b/2b/2 會捨去小數部分;b%2b\%2 則用來判斷 bb 是奇數還是偶數。

解題方法

函式的遞迴基底是 b=0b=0 時回傳 11。其餘情況先計算 p=func(a,⌊b/2⌋)p=\text{func}(a,\lfloor b/2\rfloor),再將 pp 平方;若 bb 是奇數,則再乘上 aa。因此這個函式計算的是 aba^b。

代入 func(2,11)\text{func}(2,11),依遞迴呼叫逐步計算:

🔒

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

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

免費註冊

第 26 題2 分

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

#include<stdio.h> int main(){ int i; for(i= 0; i < 3; i++){ switch(i){ case 0: break; case 1: printf("one "); case 2: printf("two "); case 3: printf("three "); } printf("four "); } return 0; }

這一題的完整詳解

核心觀念

本題考查 for 迴圈與 switch 的執行流程,尤其是 switch 中 break 的作用,以及沒有 break 時發生的「貫穿執行」(fall-through)。

  • for(i = 0; i < 3; i++) 使 i 依序為 0、1、2。
  • switch(i) 會從符合的 case 開始執行;遇到 break 才會離開 switch。
  • 若某個 case 後沒有 break,程式會接著執行後續 case 的敘述,直到遇到 break 或 switch 結束。
  • 每輪的 switch 結束後,都會執行 printf("four ");。

解題方法

依照 i = 0、1、2 逐輪追蹤:

iswitch(i) 執行內容該輪輸出
0case 0 立即遇到 break,離開 switchfour
1從 case 1 開始,依序執行 case 1、case 2、case 3one two three four
🔒

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

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

免費註冊

第 27 題2 分

對下列之 C 函式:

int f(char *s, char *t) { char *p1, *p2; for (p1 = s; *p1; p1++) { for (p2 = t; *p2; p2++) if (*p1 == *p2) break; if (*p2 == '\0') break; } return p1-s; }

若執行此函式呼叫 f("abcd", "babc"),所得到的回傳值為何?

這一題的完整詳解

核心觀念

此函式逐一檢查字串 s 中的每個字元,並搜尋該字元是否出現在字串 t 中:

  • 內層迴圈找到相同字元時,break 跳出內層迴圈。
  • 若搜尋到 t 的結尾 '\0' 仍未找到相同字元,外層迴圈也會停止。
  • 函式回傳 p1 - s,也就是「第一個沒有出現在 t 中的字元」在 s 裡的索引位置。

解題方法

s 為 "abcd",t 為 "babc"。依序檢查 s:

p1 索引s 字元是否出現在 t 中結果
0a是繼續檢查
1b是繼續檢查
2c是繼續檢查
🔒

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

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

免費註冊

第 28 題2 分

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

int fn(char s[]) { int i=0, num=0; while (s[i]) if (str[i++]=='e') num++; return num; } int main() { char c[]="To be or not to be, that's the question"; printf("%d", fn(c)); return 0; }

這一題的完整詳解

核心觀念

本題考查 C 語言的字元陣列、字串結尾字元 '\0',以及 while 迴圈與後置遞增運算子 i++。

字串 "To be or not to be, that's the question" 的字元會依序存放在陣列中,最後以 '\0' 結尾。while (s[i]) 在目前字元不是 '\0' 時繼續執行。每次執行 s[i++] 時,先取出目前位置的字元,再將 i 加 1;若該字元是小寫 'e',便將 num 加 1。

解題方法

逐字掃描字串,只計算小寫字元 'e':

  • To be:1 個
  • or not to be,:1 個
  • that's the question:2 個(the 中 1 個、question 中 1 個)

因此,字串中共有 1+1+2=41+1+2=4 個小寫 'e',函式回傳 4,printf 輸出 4。

選項分析

🔒

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

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

免費註冊

第 29 題2 分

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

#include <stdio.h> int f (int *a) { int i, t; t = *a; for( i=1; i<t; i++ ) { *a += t; } return t; } main() { int x =5, y =0; y = f(&x); printf("%d, %d\n", x, y); }

這一題的完整詳解

核心觀念

本題考查 C 語言的指標與傳址效果、for 迴圈的執行次數,以及函式的回傳值。

f(&x) 將 x 的位址傳入函式,因此函式內的 *a 指向原本的 x。對 *a 的修改會直接改變 x;但 return t 回傳的是區域變數 t 的值。

解題方法

進入 f(&x) 時,*a 指向 x,而初始值為 55:

t = *a;

因此 t = 5。接著執行:

for (i = 1; i < t; i++) {
 *a += t;
}

t 固定為 55,所以迴圈在 i=1,2,3,4i=1,2,3,4 時各執行一次,共四次。每次都將 55 加到 x:

迴圈次數x 的值
初始值5
第 1 次10
第 2 次15
第 3 次20
第 4 次25
🔒

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

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

免費註冊

第 30 題2 分

在一個有 nn 個節點(Nodes)的二元樹(Binary tree)中,包含多少個空鏈結(Null links)?

這一題的完整詳解

核心觀念

二元樹中,每個節點都有兩個子鏈結欄位,分別指向左子樹與右子樹。若某個子樹不存在,對應的鏈結就是空鏈結(Null link)。

解題方法

若二元樹有 nn 個節點,每個節點提供兩個子鏈結欄位,因此共有 2n2n 個鏈結欄位。

在一棵有 nn 個節點的樹中,每個非根節點都由一條鏈結連接至其父節點,所以非空鏈結共有 n−1n-1 條。其餘欄位就是空鏈結:

空鏈結數=2n−(n−1)=n+1\text{空鏈結數}=2n-(n-1)=n+1

因此答案為選項 (C) n+1n+1。

選項分析

🔒

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

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

免費註冊

第 31 題2 分

給定以下類別定義:

class A { public: A() { cout << ":::"; } A(int a) { cout << "***"; } A(int a,int b) { cout << "$$$"; } private: };

若在 main() 中執行以下指令,則將產生的輸出為何? A v1; A v2(1,2); A v3(3);

這一題的完整詳解

核心觀念

本題考 C++ 的建構函式多載。物件建立時,會依照提供的引數數量與型態,選擇相符的建構函式:

  • A:無引數建構函式,輸出 :::
  • A(int a):一個整數引數的建構函式,輸出 ***
  • A(int a, int b):兩個整數引數的建構函式,輸出 $$$

解題方法

依序判斷三個物件的初始化方式:

  1. A v1; 沒有提供引數,呼叫 A,輸出 :::
  2. A v2(1,2); 提供兩個整數引數,呼叫 A(int a, int b),輸出 $$$
  3. A v3(3); 提供一個整數引數,呼叫 A(int a),輸出 ***

三個建構函式依程式執行順序輸出,合併後為:

🔒

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

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

免費註冊

第 32 題2 分

在物件導向程式中,在一個類別(Class)中,可定義多個名稱相同但參數(Parameter)不同的方法(Method),此稱為:

這一題的完整詳解

核心觀念

本題考「方法多載(Method Overloading)」:在同一個類別中,定義多個方法名稱相同、參數列表不同的方法,讓程式依呼叫時提供的參數來選擇要執行的方法。參數列表的差異可在參數數量、型別或排列順序。

解題方法

抓住題幹的關鍵描述:「同一個類別中,方法名稱相同但參數不同」。這正是 Overload(多載) 的定義,因此選 (B)。

選項分析

  • **(A) Override(覆寫)錯誤:**子類別重新定義父類別中已存在的方法,通常保留相同的方法名稱與參數列表,以改變或提供該方法的實作。
🔒

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

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

免費註冊

第 33 題2 分

依順序插入下列整數以建立一棵二元搜尋樹(Binary search tree):5151、1616、6363、66、2121、5959、9292、44、99,則該二元搜尋樹的樹根(Root)的左子樹(Left subtree)、右子樹(Right subtree)各有多少個節點?

這一題的完整詳解

核心觀念

二元搜尋樹(Binary Search Tree, BST)依序插入節點時,對每個節點都遵守:左子樹的鍵值小於該節點,右子樹的鍵值大於該節點。題目詢問的是根節點左、右子樹各有幾個節點,不必比較兩邊的高度,也不計入根節點本身。

解題方法

依題目順序插入:

  • 5151 為根節點。
  • 16<5116<51,放在 5151 左側;63>5163>51,放在右側。
  • 6<516<51,往左至 1616,因 6<166<16,放在 1616 左側。
  • 21<5121<51、但 21>1621>16,放在 1616 右側。
  • 59>5159>51、但 59<6359<63,放在 6363 左側。
  • 92>5192>51、且 92>6392>63,放在 6363 右側。
  • 4<514<51、4<164<16、4<64<6,放在 66 左側。
  • 9<519<51、9<169<16、但 9>69>6,放在 66 右側。

形成的樹如下:

🔒

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

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

免費註冊

第 34 題2 分

下列何者屬於廣域網路(Wide Area Networks, WAN)使用的技術?

這一題的完整詳解

核心觀念

本題考查網路涵蓋範圍與常見連線技術的分類。廣域網路(WAN)用來連接相距較遠、跨越城市或地區的網路;ADSL 是透過電話銅線提供寬頻上網的接取技術,常用於連接用戶端與電信業者網路,屬於 WAN 相關技術。

解題方法

先辨認各選項主要用途與涵蓋範圍:

  • 藍牙與 Wi-Fi 是短距離無線通訊技術。
  • 乙太網路主要用於區域網路(LAN)。
  • ADSL 利用電話線路提供用戶連接電信網路的寬頻接取服務,符合 WAN 的廣域連線情境。

因此選擇 ADSL。

選項分析

  • (A) 藍牙(Bluetooth)錯誤。 藍牙用於個人裝置間的短距離無線通訊,例如手機連接耳機,屬於個人區域網路(PAN)範疇。
🔒

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

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

免費註冊

第 35 題2 分

關於企業電子化的軟體系統,下列敘述何者錯誤?

這一題的完整詳解

核心觀念

本題考查企業電子化系統的功能與定位。判斷重點是分清 KM、SCM、CRM、ERP 各自處理的對象:

  • KM(知識管理):蒐集、整理、分享與運用組織知識,協助知識創造、傳承及決策。
  • SCM(供應鏈管理):協調企業與供應商、製造商、通路等供應鏈夥伴。
  • CRM(客戶關係管理):運用資訊系統管理客戶資訊與互動,提升對客戶需求的了解。
  • ERP(企業資源規劃):整合企業內部各部門的流程與資料,支援協調及資源運用。

解題方法

逐一比對各選項的「系統名稱」與「功能描述」。若描述把某系統的核心技術與目的說成另一種系統的工作,即為錯誤選項。

選項 (A) 所列的資料倉儲、線上分析處理(OLAP)、資料探勘與資料展現,主要用於商業智慧(BI)及決策支援分析;將這組功能當作 KM 的定義,系統定位不符,因此錯誤。

選項分析

🔒

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

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

免費註冊

第 36 題2 分

在 TCP/IP 的架構下,為方便管理,讓每一臺電腦能夠有不同 IP,確保其位址的唯一性,網路管理員通常會採用什麼機制?

這一題的完整詳解

核心觀念

本題考查 DHCP 的用途。DHCP(Dynamic Host Configuration Protocol,動態主機設定協定)可由 DHCP 伺服器集中管理網路設定,並在裝置加入網路時,動態分配 IP 位址及其他設定,例如子網路遮罩、預設閘道與 DNS 伺服器位址。

解題方法

題幹的關鍵在「讓每一臺電腦取得不同 IP」及「方便管理」。這描述的是由網路管理機制自動分配 IP 位址,對應 DHCP。

DHCP 通常從設定好的位址範圍中租用 IP 給用戶端;租約到期、裝置離開網路或重新連線時,位址可依管理設定續租或重新分配。如此可減少逐臺手動設定的工作,也降低同一網段內因重複設定而造成 IP 衝突的機會。位址唯一性仍取決於網路的正確設定與管理。

選項分析

🔒

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

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

免費註冊

第 37 題2 分

有關傳輸控制通訊協定(Transmission Control Protocol;TCP),下列敘述何者錯誤?

這一題的完整詳解

核心觀念

本題考查 TCP 的協定層級、連線特性,以及流量控制、壅塞控制與即時影音傳輸的適用性。TCP 屬於傳輸層,採連接式傳輸,並提供可靠傳輸所需的控制機制;即時影音則通常重視低延遲,常使用 UDP 傳輸。

解題方法

先判斷各敘述是否符合 TCP 的基本特性。TCP 會在傳送資料前建立連線,並透過確認、重傳、流量控制及壅塞控制來提升傳輸可靠性。這些機制有助於資料完整送達,但也可能帶來等待與重傳延遲,因此一般而言,TCP 不適合對即時性要求高的影音傳輸。

選項分析

  • (A) 正確。 TCP 是傳輸層(Transport layer)協定,負責應用程式間的端點對端點資料傳輸。
  • **(B) 正確。
🔒

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

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

免費註冊

第 38 題2 分

下列何者不是 Web 安全協定?

這一題的完整詳解

核心觀念

本題考辨識網路安全相關協定,以及各協定所屬的網路層級與功能。一般的 HTTP 是用來傳送網頁資料的應用層協定,本身不提供加密或身分驗證;安全的網頁傳輸通常使用 HTTPS,也就是在 HTTP 上搭配 TLS。

解題方法

逐一判斷選項是否具備網路安全功能:SSH 提供安全遠端登入,SET 用於信用卡交易安全,IPsec 則在網路層提供加密與驗證。HTTP 本身只負責傳輸網頁內容,未提供上述安全保護,因此符合題目所問的「不是 Web 安全協定」。

選項分析

  • (A) HTTP 傳輸協定:正確。 HTTP 是超文字傳輸協定,用於瀏覽器與網頁伺服器間交換資料;一般 HTTP 傳輸不加密,也不驗證通訊對象,因此不是安全協定。
🔒

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

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

免費註冊

第 39 題2 分

具有下列各類常見副檔名的檔案中,相對比較安全,不易含有惡意程序碼者為何?

這一題的完整詳解

核心觀念

本題考常見檔案格式與惡意程式碼風險的相對差異。副檔名只能提示檔案類型,不能保證檔案內容安全;比較時,應看格式是否通常承載可執行指令、巨集或其他主動內容。

純文字檔 .txt 通常只儲存文字內容,不會像文件或壓縮檔那樣直接承載巨集或可執行檔,因此在四個選項中相對較不易含有惡意程式碼。

解題方法

逐一比較各格式可能包含的內容:

  • .doc 是文書文件格式,可含巨集或利用文件軟體漏洞的內容。
  • .pdf 除文字與圖像外,也可能含有程式指令、表單或其他主動內容。
  • .zip 是壓縮封裝格式,可能包住惡意程式或其他危險檔案。
  • .txt 通常是純文字,承載主動內容的能力較低。

因此,依題意比較相對安全性,選擇純文字檔 .txt。

選項分析

🔒

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

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

免費註冊

第 40 題2 分

有關數位簽章(Digital Signature)的敘述,下列何者正確?

這一題的完整詳解

核心觀念

本題考數位簽章的基本流程,以及它與訊息摘要、數位憑證和訊息認證碼的差異。數位簽章通常先對訊息計算雜湊值,再由簽署者以自己的私密金鑰對摘要簽章。驗證者則使用簽署者的公開金鑰驗證簽章,並比對訊息摘要。

解題方法

判斷各選項時,抓住兩個重點:

  1. 為提高效率,簽章通常作用於固定長度的訊息摘要,而不是整份訊息。
  2. 數位簽章的方向是「私密金鑰簽章、公開金鑰驗證」。

再區分數位簽章與其他安全機制:數位憑證用於確認公開金鑰與簽署者身分的關聯;HMAC 則使用共享密鑰產生訊息認證碼,並非數位簽章。

選項分析

(A) 正確。 訊息通常先經雜湊函數計算出訊息摘要,再對摘要進行簽章。摘要長度固定,能降低簽章運算的成本;驗證時也會重新計算訊息摘要並與簽章所驗證的摘要比對。

🔒

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

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

免費註冊

其他考古題