110 專技高考高等考試 電子工程技師 電子計算機原理 考古題詳解
第 一 題20 分
,,。求 、、 三數的總和,並將結果用八進位表示。
登入後即可作答並保存紀錄。
核心觀念
本題考查不同進位制數值的轉換與加法。十六進位、二進位、八進位都採位值表示法:各位數字依序乘上對應底數的冪次。將數值統一成八進位後相加,即可得到題目要求的表示法。
解題方法
先將 、、 分別轉成八進位,再進行直式加法。
1. 將 轉成二進位,再分組轉成八進位
每個十六進位數字對應 4 個二進位位元:
從右側每 3 位分組,不足 3 位時在左側補 0:
2. 將 分組轉成八進位
第 二 題20 分
乙太網路(Ethernet)使用的媒體存取控制協定(medium access control protocol)為何?請詳述其工作方法。
登入後即可作答並保存紀錄。
核心觀念
本題考乙太網路在共享媒介上的媒體存取控制方法。傳統共享式乙太網路採用 CSMA/CD,全名為「載波偵聽多重存取/碰撞偵測」(Carrier Sense Multiple Access with Collision Detection)。
- 載波偵聽(Carrier Sense):傳送前先偵聽媒介是否忙碌。
- 多重存取(Multiple Access):多部裝置共用同一傳輸媒介。
- 碰撞偵測(Collision Detection):傳送期間持續監聽媒介,確認是否有其他裝置同時傳送而造成碰撞。
解題方法:CSMA/CD 工作流程
- 偵聽媒介:裝置有資料要傳送時,先檢查媒介。
- 媒介忙碌時等待:若媒介正被使用,裝置持續等待;媒介轉為閒置後,再依乙太網路的規則開始傳送。
- 媒介閒置時傳送:裝置開始傳送訊框,並在傳送期間繼續監聽媒介。
- 未偵測到碰撞:訊框傳送完成,即完成此次傳輸。
- 偵測到碰撞時處理:
- 立即停止傳送原訊框。
第 三 題20 分
某一作業系統之 CPU 排程使用循環分配方法(round-robin scheduling),每次程序使用 CPU 的時間配額(time quantum)為 5 毫秒。
若今有一排程,共有四個程序 P1、P2、P3 及 P4,其到達時間與執行時間如下表所示。請問在此排程中,每個程序的總等候時間分別為何?請畫出甘特圖(Gant chart)及詳列計算過程。
時間單位為毫秒。
| 程序 | 到達時間 | 所需執行時間 |
|---|---|---|
| P1 | 0 | 8 |
| P2 | 2 | 7 |
| P3 | 7 | 5 |
| P4 | 9 | 7 |
登入後即可作答並保存紀錄。
核心觀念
循環分配法(Round-Robin)讓就緒佇列中的程序依序使用 CPU,每次最多執行一個時間配額 毫秒。程序若在配額用完前完成,就釋放 CPU;若尚未完成,則回到就緒佇列尾端。
程序的總等候時間,是它在就緒佇列中等待 CPU 的時間總和,也可用下式計算:
解題方法
依到達時間安排程序進入就緒佇列。每個程序執行最多 毫秒;配額用完且程序尚未完成時,將它排到佇列尾端。新到達的程序依到達時間加入佇列。
執行順序如下:
- –:P1 執行 毫秒,剩餘 毫秒;P2 已於時間 到達,因此 P1 回到佇列尾端後,先由 P2 執行。
- –:P2 執行 毫秒,剩餘 毫秒;P3、P4 分別於時間 、 到達。
- –:P1 執行剩餘的 毫秒並完成。
- –:P3 執行 毫秒並完成。
- –:P4 執行 毫秒,剩餘 毫秒。
- –:P2 執行剩餘的 毫秒並完成。
- –:P4 執行剩餘的 毫秒並完成。
甘特圖
第 四 題20 分
有一最大堆積(max heap)如下圖,若將根節點刪除,則此堆積如何重建?請詳細畫出重建堆積的過程及最後結果。依據重建的執行效率與正確性給分。
🖼️【此處有附圖,請對照原卷】
登入後即可作答並保存紀錄。
核心觀念
最大堆積(max heap)是完全二元樹,且每個父節點的值都大於或等於其子節點的值。刪除根節點時,將最末端葉節點移至根節點,再沿著樹往下調整:每次與較大的子節點交換,直到最大堆積性質恢復。
本題原堆積的層序陣列為
解題方法
刪除根節點 ,將最後一個節點 移到根節點,並移除原本末端的 :
8
/ \
21 27
/ \ / \
20 10 3 16
/
12
根節點 的子節點為 、。選擇較大的子節點 與 交換:
27
/ \
21 8
/ \ / \
20 10 3 16
/
12
此時 的子節點為 、。選擇較大的子節點 與 交換:
第 五 題20 分
寫出下列 C 語言程式的輸出,並詳細解釋程式的執行流程。
#include <stdio.h>
int main() { int i;
for (i=0; i<=10; i++) {
if (i==0) i=i+1;
if (i%2==0) printf("%d\n", i);
if (i/3==2) i=i+2;
else i=i+1;
printf("%d\n", i);
}
return(0);
}
登入後即可作答並保存紀錄。
核心觀念
本題考查 for 迴圈的執行順序、整數除法與餘數運算,以及程式區塊內修改迴圈控制變數的效果。
for (初始化; 條件; 更新) 的執行順序是:先執行初始化,接著檢查條件;條件成立時執行迴圈本體,完成後執行更新,再回到條件檢查。本題的迴圈更新式是 i++。迴圈本體也會修改 i,因此每一輪結束時,i 可能已改變多次。
在 C 語言中,i / 3 對整數運算採整數除法,小數部分捨去;i % 2 == 0 則表示 i 是偶數。
解題方法
逐輪追蹤 i 的值,並依照程式碼順序執行。每輪依序判斷:
- 若
i == 0,先令i = i + 1。 - 若此時
i是偶數,輸出i。 - 若此時
i / 3 == 2,令i = i + 2;否則令i = i + 1。 - 輸出此時的
i。 - 迴圈本體結束後,執行
i++,再檢查i <= 10。
以下表格中的「本輪輸出」依照實際輸出順序列出:
| 輪次 | 進入本體時 i | i == 0 處理後 | 偶數判斷與輸出 | i / 3 == 2 處理後 | 本輪最後輸出 | i++ 後 |
|---|