中四资讯及通讯科技练习卷:程式编写与算法基础
- 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 练习卷|题目与文章为原创,并非任何学校或出版社的教材。


