跳到正文
IGCSE·Tuition
计算机科学 · 练习

重复与数组:原创综合练习与解析

追踪是要在纸上亲手做才练得出来的技能,所以这套练习请你先写追踪表,再看答案。

本页内容
  1. 热身:计数控制循环
  2. 条件控制循环
  3. 修复与找错
  4. 数组与循环
  5. 如果你做错了

这套练习涵盖重复与数组中的技能:追踪计数控制和条件控制循环,修复差一错误,以及把循环用在数组上。每题先在纸上作答,打开答案之前先写好追踪表。

第 7 到 11 题使用数组 Temp[1:6],它存有读数 28, 31, 27, 33, 30, 33。把做错的题记到错题记录中。

热身:计数控制循环

第 1 题. 输出是什么?

FOR i ← 1 TO 4
   OUTPUT i * i
NEXT i
查看答案

i 取 1、2、3、4。输出是 1, 4, 9, 16。

第 2 题. 循环运行几次?最后 Sum 是多少?

Sum ← 0
FOR i ← 2 TO 10 STEP 2
   Sum ← Sum + i
NEXT i
查看答案

i 取 2、4、6、8、10,所以循环运行 5 次。Sum 依次为 2、6、12、20、30。最终值是 30。

条件控制循环

第 3 题. 最后 N 和 Count 各是多少?

N ← 100
Count ← 0
WHILE N > 10 DO
   N ← N DIV 3
   Count ← Count + 1
ENDWHILE
查看答案
测试之后的 N之后的 Count
100 > 10 真331
33 > 10 真112
11 > 10 真33
3 > 10 假结束

N 是 3,Count 是 3。

第 4 题. 循环结束时 X 的值是多少?运行了几轮?

X ← 1
REPEAT
   X ← X * 2
UNTIL X > 50
查看答案

X 依次变成 2、4、8、16、32(都不大于 50,所以继续),然后是 64(64 > 50,停止)。共 6 轮,X 是 64。

修复与找错

第 5 题. 任务是输出 1 到 8,但这段代码只输出 1 到 7。请修复。

Count ← 1
WHILE Count < 8 DO
   OUTPUT Count
   Count ← Count + 1
ENDWHILE
查看答案

当 Count 是 8 时,8 < 8 为假,8 永远不会被输出。把条件改成 WHILE Count <= 8。这样 Count 从 1 到 8 都通过测试,共输出 8 个值。

第 6 题. 这个循环永远不会结束。请解释原因并修复,然后写出修复后 N 的最终值和运行轮数。

N ← 10
WHILE N <> 0 DO
   N ← N - 3
ENDWHILE
查看答案

N 依次取 7、4、1、-2、-5 等。它越过了 0,所以 N <> 0 永远为真。修复:WHILE N > 0。

追踪:10 > 0 真(N = 7),7 > 0 真(N = 4),4 > 0 真(N = 1),1 > 0 真(N = -2),-2 > 0 假。共 4 轮,N 是 -2。

数组与循环

第 7 题. 这段代码统计有多少个读数高于 30。写出输出。

Hot ← 0
FOR i ← 1 TO 6
   IF Temp[i] > 30
      THEN
         Hot ← Hot + 1
   ENDIF
NEXT i
OUTPUT Hot
查看答案

高于 30 的读数是 31、33 和 33。30 并不高于 30。Hot 是 3。

第 8 题. 追踪这段代码并写出输出。

Max ← Temp[1]
MaxPos ← 1
FOR i ← 2 TO 6
   IF Temp[i] > Max
      THEN
         Max ← Temp[i]
         MaxPos ← i
   ENDIF
NEXT i
OUTPUT MaxPos, Max
查看答案
iTemp[i]测试MaxMaxPos
开始281
23131 > 28 真312
327假312
43333 > 31 真334
530假334
63333 > 33 假334

输出是 4, 33。

第 9 题. 编写伪代码,输出六个读数的总和与平均值。然后写出两个值,平均值保留 1 位小数。

查看答案
Total ← 0
FOR i ← 1 TO 6
   Total ← Total + Temp[i]
NEXT i
Average ← Total / 6
OUTPUT Total, Average

每一轮之后的 Total:28、59、86、119、149、182。总和是 182。平均值是 182 / 6 = 30.333,所以保留 1 位小数是 30.3。

第 10 题. Temp[Temp[1] - 25] 是多少?

查看答案

Temp[1] 是 28。28 - 25 = 3。Temp[3] 是 27。

第 11 题. 库存数组 Stock[1:4] 一开始是 5, 0, 3, 0。写出执行这段代码之后它的内容。

FOR i ← 1 TO 4
   IF Stock[i] = 0
      THEN
         Stock[i] ← 10
   ENDIF
NEXT i
查看答案

位置 2 和 4 存的是 0,被替换。数组变成 5, 10, 3, 10。

如果你做错了

这些题都可以在伪代码追踪训练器或 Python 推理沙盒中逐步运行。如果某一类错误反复出现,我们的一对一线上计算机科学补习可以专门针对这项技能。

常见问题

我应该运行代码来检查答案吗?

先在纸上追踪,再用工具核对。运行代码只能告诉你结果,不能告诉你原因,而考试要求你解释每一步。等追踪表写完后才使用沙盒,并逐行与它比较。

如果我的答案与解析不同怎么办?

把你的追踪表与解析中的表格逐行比较。第一个不同的行就是错误开始的地方。记下错误类型,例如轮数错误或把下标当成值,再用最后的指引清单找到对应的课。

这些题目像考试题吗?

它们是针对同样技能的原创题:追踪、修复并编写作用于数组的循环。没有抄袭任何历年试卷。请到 Cambridge 官网查看你考试年份的课程大纲,确认预期的写法。

资料来源

  1. Cambridge IGCSE Computer Science 0478 syllabus page

更新于:

下一步

如果同一类题目总让你在追踪的某一行出错,一对一的老师可以和你一起检查你的作答,找出错误背后的习惯。

一小时付费试听课,按所安排老师确认的收费,RM80 起。

补习由家长或监护人安排。用 WhatsApp 把这页发给他们,他们就可以替你咨询。

家长:在这里咨询

  • 已通过我们的服务帮助 9,000+ 名学生
  • 9+ 年帮助 IGCSE 学生