中四資訊及通訊科技練習卷:程式編寫與算法基礎
- 2026-11-09
中四資訊及通訊科技完整練習卷,涵蓋運算次序與整數除法、while 迴圈追蹤表、if-elif-else 條件判斷、線性搜尋與二分搜尋的比較次數、冒泡排序追蹤、函數參數與預設值、列表統計、字串處理、嵌套迴圈的算法效率、程式除錯,以及二分搜尋的完整追蹤,共 12 題 100 分,附答案及評分要點。
甲部:運算、迴圈與條件結構(28 分)
第 1–4 題:運算次序與整數除法、while 迴圈追蹤、if-elif-else 條件判斷、線性搜尋與二分搜尋比較
| # | 題目 | 答案與評分要點 |
|---|---|---|
| 1 |
某程式使用整數變數 a 及 b,程式中 a 的值為 87,b 的值為 12。 (a) 寫出 Python 運算式 a // b、a % b 及 a / b 的結果,其中 a / b 須準確至小數後兩位。(3 分) |
(a) 87 // 12 = 7(取商的整數部分);87 % 12 = 3(餘數,因 12 × 7 = 84);87 / 12 = 7.25(真除法)。(3 分) |
| 2 |
以下為一段 Python 程式碼: total = 0;
i = 1;
while i <= 8:
total = total + i * i
i = i + 2
(a) 完成追蹤表,寫出每次迭代後 i 及 total 的值。(4 分) |
(a) 追蹤表:i = 1,total = 1;i = 3,total = 10;i = 5,total = 35;i = 7,total = 84;之後 i = 9,條件 9 不大於 8 不成立,迴圈結束。(4 分) |
| 3 |
以下程式按分數輸出等級: if score >= 85:
grade = "A"
elif score >= 70:
grade = "B"
elif score >= 50:
grade = "C"
else:
grade = "F"
(a) 分別寫出 score 為 85、84、70 及 49 時的輸出。(4 分) |
(a) score = 85 → A;score = 84 → B;score = 70 → B;score = 49 → F。(4 分) |
| 4 |
某電話簿已按姓名筆劃由小至大排序,共有 2,000 筆記錄。程式可用線性搜尋或二分搜尋查找記錄。 (a) 寫出線性搜尋在最壞情況及平均情況下的比較次數。(2 分) |
(a) 線性搜尋最壞情況需 2000 次比較(目標在最後或不存在);平均情況約 1000.5 次,即 (n + 1) ÷ 2。(2 分) |
乙部:排序、函數與資料結構(32 分)
第 5–8 題:冒泡排序追蹤、函數參數與預設值、列表統計、字串處理
| # | 題目 | 答案與評分要點 |
|---|---|---|
| 5 |
以下程式以冒泡排序把列表由小至大排列: data = [45, 12, 78, 33, 56, 90] (a) 寫出完成第一趟(first pass)後列表的內容。(4 分) |
(a) 第一趟由左至右比較相鄰元素並交換:45 與 12 交換;45 與 78 不換;78 與 33 交換;78 與 56 交換;78 與 90 不換。結果為 [12, 45, 33, 56, 78, 90],最大值 90 已到最後位置。(4 分) |
| 6 |
以下函數計算補習班費用,每小時 120 元,單次上限 1,000 元: def lesson_fee(hours, rate=120, cap=1000):
amount = hours * rate
if amount > cap:
amount = cap
return amount
(a) 寫出 lesson_fee(6)、lesson_fee(10) 及 lesson_fee(8.5) 的回傳值。(3 分) |
(a) lesson_fee(6) = 6 × 120 = 720;lesson_fee(10) = 1,200,超過上限,回傳 1000;lesson_fee(8.5) = 1,020,同樣被上限截為 1000。(3 分) |
| 7 |
某班 7 位學生的測驗分數如下: marks = [72, 58, 91, 64, 85, 47, 79] (a) 寫出總分、最高分及最低分。(3 分) |
(a) 總分 = 72 + 58 + 91 + 64 + 85 + 47 + 79 = 496;最高分 91;最低分 47。(3 分) |
| 8 |
某程式中字串變數 s 的值為 “Programming”。 (a) 寫出 len(s)、s[0:4] 及 s[-3:] 的值。(3 分) |
(a) len(s) = 11;s[0:4] = Prog(索引 0 至 3);s[-3:] = ing(最後三個字元)。(3 分) |
丙部:算法效率、除錯與搜尋實作(40 分)
第 9–12 題:嵌套迴圈的時間複雜度、程式除錯與邏輯錯誤、二分搜尋完整追蹤、綜合應用程式
| # | 題目 | 答案與評分要點 |
|---|---|---|
| 9 |
以下程式計算嵌套迴圈的執行次數: total = 0
for i in range(n):
for j in range(i):
total = total + 1
(a) 當 n = 120 時,total 的值是多少?(3 分) |
(a) 外層 i 由 0 至 119,內層執行 i 次,總次數 = 0 + 1 + … + 119 = 119 × 120 ÷ 2 = 7140。(3 分) |
| 10 |
以下程式目的為計算 2 至 20(包括 20)所有偶數之和,但程式有錯: total = 0
i = 1
while i <= 20:
if i % 2 == 1:
total = total + i
i = i + 1
print(total)
(a) 寫出程式實際輸出的值。(2 分) |
(a) 程式把 i % 2 == 1(奇數)的數累加,即 1 + 3 + … + 19 = 100。(2 分) |
| 11 |
以下列表已按數值由小至大排序,程式以二分搜尋查找 key: ids = [12, 18, 23, 27, 31, 38, 44, 50, 56, 62, 69, 75, 81, 88, 94] (a) 當 key 為 75 時,逐步寫出 low、high、mid 及比較結果,並寫出最終索引。(5 分) |
(a) low = 0,high = 14,mid = 7 → ids[7] = 50,50 小於 75,low = 8;low = 8,high = 14,mid = 11 → ids[11] = 75,相等,找到,索引 11。(5 分) |
| 12 |
某程式的輸入為 8 位學生的分數: scores = [48, 67, 55, 90, 73, 38, 81, 59] (a) 計算平均分,準確至小數後一位。(3 分) |
(a) 總分 = 48 + 67 + 55 + 90 + 73 + 38 + 81 + 59 = 511;平均 = 511 ÷ 8 = 63.875 → 63.9。(3 分) |
TutorZone 練習卷|題目與文章為原創,並非任何學校或出版社的教材。


