简介:这份资源是面向小学组NOC编程猫创新编程赛的单选题模拟测试题,适合正在备赛或需要练习编程基础知识的少儿编程学习者。内容围绕编程猫平台与Scratch入门知识展开,涵盖变量、循环、条件语句、坐标绘制、计时器、角度计算等核心考点,题型贴近真实赛题风格,可帮助考生熟悉题目形式并检验掌握程度。资源包共1个文件,为docx文档,大小约951KB,文档内包含10道单选题及正确答案,部分题目还配有图形或程序场景说明,便于自学或教师组织模拟测试。目前已有3268人浏览学习,说明该资料在同类备赛资源中具有一定实用性。通过完成这些题目,读者可以巩固变量定义与赋值、循环次数判断、造型切换、图形绘制逻辑、古代时辰划分等跨学科知识点,同时提升对编程猫积木脚本的读图与推理能力,为正式参赛做好针对性准备。
1. 一份小学组模拟题,值得用工程师的思路拆一遍
NOC编程猫创新编程赛的初赛虽然以图形化积木为载体,但它的单选题并没有想象中那么“小儿科”。这份第一期小学组模拟测试题共10道单选,覆盖了造型索引、循环边界、变量累加、角度分类、列表插入和画笔绘制六类知识点。每一道题表面上在考“运行结果”,实际上是在考孩子能不能像执行程序一样,把积木逐步推导出来。对带赛老师来说,它是一份现成的学情诊断单;对做编程教育的开发者而言,它提供了一个观察新手如何理解程序执行顺序的窗口。
2. 造型切换与循环次数:五道题背后的索引与边界规则
在10道题里,跟造型和循环相关的占了一半:第1题巫婆施法、第2题卫星倒计时、第4题变装走秀、第7题走路动画、第10题倒计时另一版本。它们集中考察两个概念:造型列表的索引规则,和循环执行的次数边界。
2.1 造型索引从1开始:巫婆施法五次的取模计算
编程猫源码编辑器和Scratch一样,角色所有造型构成一个列表,编号从1开始。“下一个造型”积木的行为是:当前造型编号加1,当超过造型总数时回到第1个造型,形成一个环形顺序。
假设王子有4个造型,初始处于造型一,每施法一次执行一次“下一个造型”:
| 施法次数 | 切换后的造型编号 | 说明 |
|---|---|---|
| 1 | 2 | 造型一 → 造型二 |
| 2 | 3 | 造型二 → 造型三 |
| 3 | 4 | 造型三 → 造型四 |
| 4 | 1 | 造型四 → 造型一(环形回绕) |
| 5 | 2 | 造型一 → 造型二 |
用Python表示这一过程:
total_costumes = 4 # 造型总数 current_index = 1 # 初始造型编号,从1开始 spell_count = 5 # 施法次数 result = (current_index + spell_count - 1) % total_costumes + 1 print(f"施法{spell_count}次后,落点造型编号为:{result}")(current_index + spell_count - 1) % total_costumes + 1是这类题的标准解法。current_index + spell_count - 1先把初始编号和移动步数合并,减1是为了把1开始的索引转换为0开始的偏移参与取模;% total_costumes让编号始终落在列表范围内;最后加1恢复成1开始的索引。
这道题正确选项是青蛙。在实际题目图片里,青蛙位于造型列表的哪一位,取决于出题时的排列顺序。但只要知道造型总数和初始编号,代入这个取模公式就能算出落点,无论列表怎么排都不会数错。
2.2 第3个造型到第7个造型:数距离,不要数名字
第4题里小猫有8个不同造型,当前是第3个造型,运行积木之后变成第7个造型。第3到第7中间隔着4个位置,因此程序里实际执行了4次“下一个造型”,或者使用了一次直接跳转到第7个造型的积木。
做这类题时,我建议学生不要试图记忆造型名称,直接在草稿纸上列编号:
current = 3 move = 4 total = 8 result = (current + move - 1) % total + 1 # 结果为7如果程序里只执行3次“下一个造型”,最终会停在6;如果是5次,就会因为8个造型的环形回绕变成第2个。出题人常在这个地方挖坑:把选项设置为7、6、1、4,让学生分不清是数错了移动次数,还是忘了回绕规则。
这里有一个容易忽略的细节:在编程猫中,“下一个造型”和“换成xx造型”是两个不同的积木。前者是相对移动,与当前造型有关;后者是绝对赋值,与当前造型无关。如果题目问“运行哪组积木后变成第7个造型”,干扰项里往往会出现“换为造型3”再加“下一个造型”的混合写法,读题时要先看清积木用的是哪种。
2.3 走路动画:切换频率决定了动画是否成立
第7题阿短有5个造型,要做出走路动画效果。动画的本质是造型在一定时间间隔内连续切换,所以积木组合必须同时包含三部分:重复执行、下一个造型、等待或延时。答案C不行,是因为它只做了造型切换而没有体现动态过程。
常见不可用的写法有两种。第一种是把“下一个造型”放在重复执行外面,整段程序只切换一次;第二种是使用“换成造型1”固定造型,无论重复执行多少次,角色都停留在一个造型上,视觉上没有任何变化。
# 可用:重复执行 + 下一个造型 + 等待 重复执行: 下一个造型 等待0.2秒# 不可用:固定造型,没有切换 重复执行: 换成造型1对比两个结构可以看出,“下一个造型”关注的是造型列表中的相对顺序,而“换成造型1”关注的是绝对位置。走路动画对相对顺序有强依赖,如果阿短的5个造型不是按走路帧的顺序排列,动画同样会乱。这也解释了为什么角色设计阶段就应当把造型顺序排好——造型列表本质上是一组按帧排列的图像序列,和视频编解码里的帧序列是同一个思想。
2.4 倒计时到0:循环次数等于差值,不是数字个数
第2题和第10题几乎相同,都是卫星发射倒计时,缺失循环次数,选择能让程序倒计时到0秒的数字,答案是5。
最常见的错误是选6,理由是“5、4、3、2、1、0一共6个数字”。但程序中的倒计时变量是这样运作的:
count = 5 # 倒计时初始值 for i in range(5): # 循环5次 print(count) # 输出当前秒数 count = count - 1 print(count) # 循环结束后 count 为 0这段代码中,循环体每执行一次,变量count就减1。从5减到0,需要执行5次减法。循环内先输出再减少,最后一次循环输出1后count变成0,循环结束;如果程序在循环后面单独加了一条“说 count”的积木,屏幕上才会看到0。
因此判断这类题时,要区分“循环次数”和“显示个数”。循环次数等于初始值与结束值的差值,即5减0等于5;输出次数等于差值加1。可以把这条规则记成:倒计时的循环次数等于起止数值的差,不要被显示出来的数字个数带偏。
3. 变量累加与角度分类:从数值变化判断程序行为
第3题和第6题都涉及数值型数据。第3题变量存的是角度,按角度大小判断角类型;第6题变量初始为0,运行一段累加程序后结果变成19。两道题都可以通过追踪变量的中间值来获得最终答案。在图形化编程初赛里,数值题是最容易靠“感觉”作答的,因为积木看起来像搭积木,很多学生不习惯把每个积木的执行结果记录在纸面上。
3.1 变量累加的追踪方法:列变化表,不跳步
第6题没有在题干文字里展开完整积木,只给出了初始值0和最终答案19。这类累加题的核心不是背下某个程序的结果,而是掌握“在循环内追踪变量”的能力。
图形化编程里累加的一个常见结构是:变量初始为0,重复执行若干次,每次给变量加一个固定值,循环结束后再执行一次额外运算。比如下面这段:
变量 = 0 for i in range(6): 变量 += 3 变量 += 1 print(变量) # 输出19这个结构推到第6次循环结束时变量为18,再加1变成19。但很多学生考场上一算就错,原因是心算时跳步,比如把6次循环看成“3乘5加1”,或者把初始0当1开始数。
追踪变量时最可靠的手法是画变化表,每一行记录循环轮次开始时和结束时的变量值:
| 轮次 | 开始值 | 操作 | 结束值 |
|---|---|---|---|
| 1 | 0 | 加3 | 3 |
| 2 | 3 | 加3 | 6 |
| 3 | 6 | 加3 | 9 |
| 4 | 9 | 加3 | 12 |
| 5 | 12 | 加3 | 15 |
| 6 | 15 | 加3 | 18 |
| 循环后 | 18 | 加1 | 19 |
这张表的价值在于:当循环结构复杂到每次增量变化、或者条件是“变量大于某值时退出”,逐行追踪依然是通用打法。比赛里5分题花30秒列表格,比盯着屏幕心算两分钟更稳。
这类题在编程里对应的是循环不变量(loop invariant)的概念。每次循环前后,变量变化值保持恒定,最终结果就是初始值加增量乘以循环次数。理解这一点后还能快速变体:循环次数改成7,结果是22;改成5,结果是16。出题人换数字的逻辑就在这。
3.2 角度分类:把数学定义翻译成比较运算
第3题变量“角度”记录角的大小,运行积木后判断得到的是什么角,答案是A锐角。数学定义是:锐角小于90度,直角等于90度,钝角大于90度且小于180度,平角等于180度。
把定义翻译成程序就是一段if-else链:
angle = 45 # 变量角度,具体值来自积木计算结果 if angle < 90: print("锐角") elif angle == 90: print("直角") elif angle < 180: print("钝角") else: print("平角")这道题的干扰项集中在90度和180度两个边界值上。如果程序里旋转了90度又执行了其他移动,角度最终值很可能不是整数,平时练习时要习惯保留小数再比较。
这里给一个扩展视角:图形化编程里的角度变量不一定都在0到360之间。旋转积木允许负角度,比如“左转-30度”等价于右转30度。做角度分类前,最好先规约到0到360的范围:
# 将任意角度规约到 [0, 360) angle = angle % 360 if angle < 90: print("锐角") elif angle == 90: print("直角") elif angle < 180: print("钝角") else: print("平角")编程猫中方向系统的0度通常定义在舞台上方的正北方向,角度变量存储的是度数而不是弧度。Scratch中角色面朝90度是右,编程猫的方向定义略有差异,所以看到“面向某个方向”的积木不要直接跟数学坐标轴对应,先确认题干里角度变量的值是怎么来的。角度题和画笔题经常结合出,第5题、第8题本质上也包含角度关系。
4. 画笔轨迹与列表操作:从执行顺序看最终结果
第5题、第8题是画笔绘制,第9题是时辰表补齐。三个题目都考察“按顺序执行一段积木后,系统状态发生了什么变化”,区别在于第5、8题的变化发生在舞台坐标上,第9题发生在列表数据上。解题时都需要把“执行顺序”作为第一性原理:画笔图形看的是每条边执行后的位置变化,列表操作看的是每次插入后的元素下标迁移。顺序错了,结果必然错。
4.1 画笔图形判断:旋转角度乘以重复次数决定形状
画笔绘制类是NOC和编程猫考级里的常客。程序结构往往是落笔、移动、旋转三件套,再用重复执行包裹。判断最终图形,核心是看两个数字的乘积:重复执行次数n,和每次旋转角度a。
当 n × a = 360 时,画笔转完一整圈,图形闭合且是正n边形。例如n=5、a=72画出正五边形;n=4、a=90画出正方形。当 n × a = 720 时,画笔走了两个完整圆周,图形会出现自交,典型例子是n=5、a=144的五角星。
| 重复次数 × 旋转角度 | 图形特征 | 示例 |
|---|---|---|
| = 360 | 闭合正多边形 | 5 × 72 = 360 → 正五边形 |
| = 720 | 闭合星形自交 | 5 × 144 = 720 → 五角星 |
| ≠ 360的整数倍 | 图形不闭合 | 5 × 80 = 400 → 开口折线 |
下面用turtle模块做一个标准示范,假设程序结构为“重复执行5次,每次前进100步,右转72度”:
import turtle t = turtle.Turtle() for _ in range(5): t.forward(100) # 每次前进100步 t.right(72) # 每次右转72度 turtle.done()这个程序执行后画出一个正五边形。把右转72度改成144度,得到的就是五角星。旋转角度大于90度时,相邻两条边的方向差变大,图形开始向内折叠,像星星的尖角。
实际做单选题时,从积木上能直接读到n和a,因此不需要真的画图,只需要判断乘积。如果乘积不是360的整数倍,比如n=5、a=80,总转角是400度,多出来的40度会让最后一条边偏离起点,图形不能闭合,这类“缺口图形”也是常见的干扰项。
值得留意的是,画笔图形题里的“旋转角度”是外角而不是内角。正三角形内角是60度,但让小海龟画正三角形的旋转角度是120度。很多学生把内角当旋转角,看到“旋转60度、重复3次”就以为是三角形,实际画出来是一个钝角折线。解题时先确认积木里的旋转指的是左转/右转的度数,而不是画笔轨迹内侧的角度。
4.2 十二时辰列表:插入和替换的本质差异
第9题用十二时辰做背景:一天划分成十二个时辰,对应十二生肖,小可漏掉了午时,要用积木把时辰表补齐,答案C。
正确顺序是子、丑、寅、卯、辰、巳、午、未、申、酉、戌、亥。如果午时缺失,列表就成了子、丑、寅、卯、辰、巳、未、申、酉、戌、亥。此时如果用“替换”把某一位改成午,要么把巳时覆盖掉,要么把未时覆盖掉,列表里仍然只有11个元素。
正确操作是先把午时插入到巳时之后,列表从11个元素变成12个元素,后续元素自动后移:
shichen = ["子", "丑", "寅", "卯", "辰", "巳", "未", "申", "酉", "戌", "亥"] pos = shichen.index("巳") + 1 # 找到"巳"的位置,在其后插入 shichen.insert(pos, "午") print(shichen) # ['子', '丑', '寅', '卯', '辰', '巳', '午', '未', '申', '酉', '戌', '亥']index("巳")返回5(从0开始编号),加1后得到6,在索引6处插入“午”,原来的“未”变为索引7。如果使用编程猫的积木,对应的操作就是“在列表的第6项后插入午时”或“在列表的第7项前插入午时”。
这道题在选择题里还有另一个考点:选项积木可能用“添加”而不是“插入”。“添加”会把午时追加到列表末尾,结果是子、丑、寅、卯、辰、巳、未、申、酉、戌、亥、午,顺序依然是错的。区分“添加”和“插入”是列表操作的入门门槛,和数据库里INSERT是追加到表尾、还是按主键插入,是同一个逻辑。
5. 用这份模拟题做考前诊断的三个技巧
资源里最实用的部分其实是附答案。多数人拿到模拟题会直接做题、对答案,但我更建议把这份资源当成“学习诊断工具”来用,一套10道单选题能发挥出的价值,远超过5分一题。
5.1 错题按知识点归类,不要按题号
整理错题时,不要按“第3题错了”这种方式记录,而是按知识点归类:造型切换归一类、循环边界归一类、变量累加归一类、列表操作归一类、画笔绘制归一类。归类之后你会发现,第2题和第10题是同一种循环边界题,第1题和第4题同属于造型索引题,错误模式高度相似。真正需要加强的不是某道题的解法,而是某个知识点的思维习惯。
5.2 用“逐行朗读法”检查积木逻辑
检查循环和变量程序时,把每段积木翻译成一句能说出口的话,比如“重复执行5次,每次变量增加3”。然后像给电脑报数一样,把每一轮变化读出来:第一次变量变成3,第二次变成6,第三次变成9,不要跳步。这个过程和调试代码时手动执行每一行是一样的原理,只是对象换成了图形化积木。如果带孩子复习,这个方法同样适用:让孩子逐行口述变量变化,往往比直接看代码更快发现漏洞。
5.3 考前一周限时做一套,统计题型分布
建议在正式比赛前一周,用这份资源和类似试卷做一次限时训练。10道单选题控制在10到15分钟内完成。完成后统计每类知识点错了几题,错的类别就是最后一周的复习重点。如果画笔图形错题多,把第4.1节的乘积规则抄一遍;如果倒计时循环错题多,把“循环次数等于差值”用一句话写在旁边。考前最后一天只翻这些浓缩出来的句子,不再做新题。
如果想要更多的训练量,可以把这份试卷的答案遮住,给每道题先写一个“知识点标签”,再对照内容。标签写错的地方,往往就是下一次大概率出错的地方。
本文还有配套的精品资源,点击获取