112 高普考高考三級 電信工程 計算機概論 考古題詳解

112 年・高普考・高考三級・電信工程
試題代碼 計算機概論

第 一 題25 分

一、電腦系統包含硬體、軟體與資料。

(一)硬體由 CPU、記憶體以及 I/O 設備互相連接所組成。I/O 設備是否能直接連接到 CPU 和記憶體的匯流排(Bus)?說明其理由。(10 分)

(二)使用「二補數」(2’s Complement)方法儲存整數資料有何優點?某電腦系統使用「二補數」儲存整數,且配置 8 位元記憶體以儲存每個整數,則該系統可以表示的整數範圍為何?請詳述其計算過程。(15 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

系統匯流排負責連接 CPU、記憶體及 I/O 設備,通常包含:

  • 資料匯流排:傳送資料。
  • 位址匯流排:指定資料來源或目的地。
  • 控制匯流排:傳送讀取、寫入、中斷等控制訊號。

CPU 與記憶體的運作速度通常高於 I/O 設備。若各種速度不同的設備直接共用匯流排,便需要協調傳輸時機,也須處理不同設備的電氣特性、資料格式與控制方式。

解題方法與說明

I/O 設備可以直接連接到系統匯流排,但實際系統通常由 I/O 控制器或介面模組作為設備與匯流排之間的橋接介面。控制器負責:

  1. 配合匯流排協定,傳送位址、資料與控制訊號。
  2. 緩衝資料,調節 CPU、記憶體與慢速 I/O 設備之間的速度差異。
  3. 將設備特有的控制方式轉換成系統可辨識的操作。
  4. 必要時處理中斷或直接記憶體存取(DMA)。

因此,回答「能否直接連接」時,須區分匯流排架構上可連接與實際上通常透過控制器連接。若將 I/O 設備直接掛上匯流排而沒有適當介面,可能造成協定不相容、速度無法配合或控制困難。

解題技巧

答題時先明確表態「可以」,再補充實務上通常透過 I/O 控制器或介面模組連接,並說明其協調速度、格式與控制訊號的功能,即可完整涵蓋題意。

(二)二補數的優點與 8 位元整數範圍

核心觀念

二補數(2’s complement)以固定 nn 位元表示有號整數。最高位元作為符號權重:正數的最高位元為 00;負數以其二補數編碼表示。其範圍為:

−2n−1≤x≤2n−1−1-2^{n-1} \leq x \leq 2^{n-1}-1

二補數的優點

🔒

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

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

免費註冊

第 二 題25 分

二、回答以下關於網路與應用之問題:

(一)在網際網路各個分層的資料傳輸,何謂「點對點」(Point-to-Point)傳輸?點對點傳輸與端對端(End-to-End)傳輸有何差異?(10 分)

(二)住在臺南的 Adam 想傳送電子郵件給在美國的 Bambi,分享他的工作現況。一封典型的電子郵件從 Adam 傳送到 Bambi 的流程為何?詳細說明流程中的關鍵組件,包含硬體、軟體以及使用到的協定等。(15 分)

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

網路採分層架構,每一層負責不同範圍的資料傳輸:

  • 點對點(Point-to-Point)傳輸:相鄰網路節點之間的傳輸。資料在前往目的地的途中,會經過多段鏈路;每一段由該鏈路兩端的節點負責傳送與接收。例如,主機將封包交給家用路由器,路由器再經由下一條鏈路轉送。
  • 端對端(End-to-End)傳輸:來源主機上的應用或傳輸端點,與目的主機上的對應端點之間的邏輯通訊。中間的路由器通常只負責轉送,不處理應用程式的完整資料內容。

解題方法

判別兩者時,先看通訊的範圍:

  1. 若只描述相鄰節點間的一段鏈路,屬於點對點傳輸。資料鏈結層常處理這一段的成框、媒介存取與錯誤偵測;實際鏈路技術可使用乙太網路、Wi-Fi 或 PPP。
  2. 若描述來源到目的端的整體通訊,屬於端對端傳輸。傳輸層的 TCP 或 UDP 提供主機間程序通訊所需的服務;應用層協定則處理電子郵件、網頁等應用需求。
比較項目點對點傳輸端對端傳輸
範圍相鄰節點之間的一段鏈路來源端到目的端的整體路徑
參與者每一段鏈路的兩端節點通訊兩端的主機或程序
中間路由器角色可在一段傳輸中作為端點,收取後再轉送通常只轉送封包,不是應用通訊端點
常見例子主機到路由器、路由器到下一個路由器兩台主機間的 TCP 連線、應用程式間的通訊

解題技巧

「點對點」看一跳、一段鏈路;「端對端」看完整來源與目的端。封包從來源到目的地通常會經過多段點對點傳輸,而這些鏈路共同承載端對端通訊。兩者傳送的對象與範圍不同,不可混為一談。

(二)Adam 傳送電子郵件給 Bambi 的流程

核心觀念

電子郵件流程涉及使用者端郵件軟體、郵件伺服器、DNS、網路路由設備,以及 SMTP、POP3 或 IMAP 等協定。須分清楚:

  • SMTP:用於郵件提交與郵件伺服器間的轉送。
  • POP3/IMAP:收件者從郵件伺服器讀取郵件時常用的協定。
  • DNS:查詢收件網域的郵件伺服器,通常利用 MX 記錄。

解題方法與完整流程

  1. 撰寫與提交郵件 Adam 在臺南使用電腦或手機,透過郵件用戶端(MUA,例如郵件 App 或網頁郵件介面)撰寫郵件,填入 Bambi 的電子郵件地址與工作近況,並按下傳送。
🔒

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

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

免費註冊

第 三 題25 分

三、陣列與二元樹是撰寫程式常用的資料結構。

(一)使用陣列(Array)結構儲存二元樹(Binary Tree)有何優點?(10 分)

(二)下面陣列 Arr[0:14]Arr[0:14] 表示一棵二元樹,陣列的元素代表該樹每個節點的鍵值,請撰寫一個演算法重建出該二元樹。該樹是否為一棵二元搜尋樹(Binary Search Tree)?(15 分)

陣列內容如下:

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

登入後即可作答並保存紀錄。

這一題的完整詳解

核心觀念

本題考查兩個觀念:

  1. 以陣列表示二元樹時,利用節點索引直接計算父節點與子節點位置。
  2. 判斷二元搜尋樹(Binary Search Tree, BST)的條件。

採用從索引 00 開始的陣列表示法時,索引為 ii 的節點,其:

  • 左子節點索引:2i+12i+1
  • 右子節點索引:2i+22i+2
  • 父節點索引:⌊i−12⌋\left\lfloor \dfrac{i-1}{2} \right\rfloor

空白元素代表該位置沒有節點。


(一)以陣列儲存二元樹的優點

1. 不需額外儲存指標

鏈結式二元樹必須為每個節點儲存左右子節點指標;陣列表示法只需依照索引計算子節點位置,可節省指標欄位所占的記憶體。

2. 子節點位置容易計算

對於索引 ii 的節點,可以直接透過下式找到子節點:

Left(i)=2i+1\text{Left}(i)=2i+1 Right(i)=2i+2\text{Right}(i)=2i+2

不需逐一追蹤指標。

3. 父節點位置容易取得

子節點也可以直接利用索引取得父節點:

Parent(i)=⌊i−12⌋\text{Parent}(i)=\left\lfloor \frac{i-1}{2} \right\rfloor

因此適合進行向上或向下的樹結構操作。

4. 記憶體配置連續

陣列元素通常配置在連續記憶體位置,具有較佳的快取(Cache)區域性,存取速度通常比分散配置的鏈結節點更有效率。

5. 適合完整二元樹

對完整二元樹或接近完整二元樹而言,節點大多集中在陣列前段,空間浪費少,且不必使用空白指標。

6. 適合實作堆積

二元堆積(Binary Heap)通常以陣列儲存。最大堆積、最小堆積的插入、刪除與調整操作,都能利用索引快速找到父子節點。

7. 遍歷實作簡單

前序、中序、後序及層序走訪都可利用索引與遞迴方式實作,結構清楚。

8. 易於進行層次管理

索引位置直接反映節點所在層次,特別適合需要依層次處理節點的演算法,例如堆積與廣度優先走訪。

補充而言,若二元樹非常稀疏,陣列中會產生許多空白位置,空間效率反而不如鏈結式表示法。


(二)重建二元樹

解題方法

依照陣列表示二元樹的索引規則,從根節點索引 00 開始:

  • 若 Arr[i]Arr[i] 為空,表示此處沒有節點。
  • 若 Arr[i]Arr[i] 有鍵值,建立一個節點。
  • 再遞迴建立其索引為 2i+12i+1 與 2i+22i+2 的左右子樹。

演算法

Build(i):
 若 i > 14 或 Arr[i] 為空:
 回傳 NULL

 建立節點 Node,Node.key = Arr[i]
 Node.left = Build(2i + 1)
 Node.right = Build(2i + 2)

 回傳 Node
🔒

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

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

免費註冊

第 四 題25 分

四、請回答以下問題:

(一)若執行下列的 C 程式,且輸入整數 1010,則程式輸出的結果是什麼?說明其計算過程。(10 分)

C 程式:

  1. #include <stdio.h>
  2. int main()
  3. {
  4. int i, j, n, order;
    
  5. scanf("%d", &n);
    
  6. order = 0;
    
  7. for (i = 0; i < n - 1; i++)
    
  8.     for (j = i; j < n - 1; j++)
    
  9.         order = order + 1;
    
  10. printf("%d ", order);
    
  11. }

(二)如下列 Python 程式,其目的為何?如果執行該程式,並輸入整數 66,則輸出的結果是什麼?寫出其詳細步驟。(15 分)

Python 程式:

  1. def aloha(k):
  2. if (k > 0):
    
  3.     rs = k + aloha(k - 1)
    
  4. else:
    
  5.     rs = 0
    
  6. return rs
    
  7. n = int(input())
  8. a = [0 for i in range(n + 1)]
  9. i = 0
  10. while i < len(a):
  11. a[i] = aloha(i)
    
  12. i = i + 1
    
  13. print("theResults:")
  14. print(a, end='\n')

登入後即可作答並保存紀錄。

這一題的完整詳解

(一)C 程式:巢狀迴圈計數

核心觀念

本題考查巢狀 for 迴圈的執行次數。變數 order 初值為 00,每當內層迴圈執行一次,就加 11。

解題方法

輸入 n=10n=10。外層迴圈條件為 i<n−1i<n-1,所以 ii 依序為 0,1,…,80,1,\ldots,8。固定每個 ii 後,內層迴圈從 j=ij=i 開始,直到 j=8j=8,因此執行次數為 9−i9-i。

iijj 的範圍內層執行次數
00 至 89
11 至 88
22 至 87
33 至 86
44 至 85
55 至 84
66 至 83
77 至 82
881

因此,

order=9+8+7+6+5+4+3+2+1=9×102=45\text{order}=9+8+7+6+5+4+3+2+1 =\frac{9\times10}{2}=45

解題技巧

固定外層變數 ii,先算內層迴圈執行次數,再將各次數相加。此程式的總執行次數也可寫成三角數公式 (n−1)n2\frac{(n-1)n}{2};代入 n=10n=10 得 4545。

(二)Python 程式:遞迴計算累加和

核心觀念

函式 aloha(k) 使用遞迴計算從 11 累加至 kk 的總和。當 k≤0k\leq 0 時,遞迴終止並回傳 00;當 k>0k>0 時,回傳 k+aloha(k−1)k+\text{aloha}(k-1)。程式接著將 k=0k=0 至 nn 的函式結果依序存入串列 a。

解題方法

🔒

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

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

免費註冊

其他考古題

112 年高普考高考三級・其他類科的《計算機概論》