
点击上方蓝字关注我们吧

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2024年3月认证图形化编程二级真题解析。
GESP2024年3月认证图形化编程四级
一、单选题(共10题,每题2分,共30分)
|
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
答案 |
C |
D |
B |
B |
A |
C |
B |
C |
D |
C |
D |
A |
D |
B |
A |
1、小杨的父母最近刚刚给他买了一块华为手表,他说手表上跑的是鸿蒙,这个鸿蒙是?(C)。
A、小程序
B、计时器
C、操作系统
D、神话人物
【答案】C
【解析】本题考察操作系统的相关知识。这里提到的“鸿蒙”是指华为公司推出的自主研发的操作系统,全称为“鸿蒙OS”(HarmonyOS)。它是华为为了应对美国对其安卓操作系统的限制而开发的一款全新的分布式操作系统。正确答案为C。
2、下列流程图的输出结果是?(D)

A、120
B、153
C、720
D、873
【答案】D
【解析】本题考察流程图的输入和输出。一开始sum为0,i为1,然后判断i是否小于等于6,1<=6是成立的(YES),接着设a为1,j为1,然后判断j是否小于等于i,1<=1是成立的(YES),接着再设a为a*j=1,j为j+1=2,然后判断2<=1是不成立的(NO),这时候设sum为sum+a=1,i为i+1=2,然后回到前面,继续判断i是否小于等于6,继续2<=6是成立的(YES),接着循环算出sum为sum+a=3,i为i+1=3。依次类推,sum在i=3,4,5,6时,分别为9,33,153,873。当i=7时,不满足7<=6,此时输出sum=873。正确答案为D。
3、默认小猫角色,执行下列程序,面向的方向是?(B)

A、向上
B、向下
C、向左
D、向右
【答案】B
【解析】本题考察广播和循环。执行程序,角色面向180度方向(向下)后,广播消息1,接收到消息1后,初始化变量i为0,执行左转90度(向左),广播消息2,接收到消息2并左转90度(向上),变量i增加1变为i=1继续执行循环,i=1时,执行左转90度(向右),广播消息2,接收到消息2并左转90度(向下),变量i增加1变为i=2大于1,此时跳出循环并结束。小猫角色面向方向为向下。正确答案为B。
4、默认小猫角色,执行下列程序,输入“bananas”,小猫说出的内容是?(B)

A、bananas
B、banana
C、sananab
D、ananab
【答案】B
【解析】本题考察字符串的处理。执行程序,设置变量s为空,变量i=1,重复执行停止的条件是i>bananas的字符数-1,即i>6,每次循环i都会增加1,因此循环的次数是6次。第一次循环设置s=a,第二次循环设置s=na,第三次循环设置s=ana,第四次循环设置s=nana,第五次循环设置s=anana,第六次循环设置s=banana。六次循环后输出结果s为banana。正确答案为B。
5、默认小猫角色,执行下列程序,变量result的结果是?(A)


A、35
B、25
C、24
D、21
【答案】A
【解析】本题考察列表中的查询数据。执行程序,在数据列表中添加14,然后删除数据列表中的第4项(30),此时,数据列表中的数据为10,11,7,9,6,14。设变量result的初始值为0,变量i的初始值为1,重复执行停止的条件是i>列表的项目数,每次循环i都会增加1,因此循环的次数就是数据列表的项目数。循环里嵌套了一个条件判断,判断数据列表的第i项中数据值是否包含1,如果包含1则将列表中第i项数据值加到result上。数据列表中的10,11,14中包含1,所以相加得到变量result的结果是35。正确答案为A。
6、导入螃蟹角色Crab,执行下列程序,以下说法错误的是?(C)


A、有5次抓错Crab本体的机会
B、Crab本体和克隆体的大小都随周围声音的大小而变化
C、鼠标指针碰到本体后,本体说“眼神真好”
D、舞台上最多可以看到11只Crab
【答案】C
【解析】本题考察克隆的相关知识。图2中设置变量机会的初始值为5次,因此A选项有5次抓错Crab本体的机会是正确的;图1中在克隆体启动时重复执行设置Crab克隆体的大小为30+响度,图2中重复执行设置Crab本体的大小为30+响度,因此B选项中Crab本体和克隆体的大小与响度有关,即随周围声音的大小而变化是正确的;当本体碰到鼠标指针并且按下鼠标时本体才会说“眼神真好”,因此C选项是错误的;图1中执行程序克隆Crab本体10次,加上本体总共有11只Crab,因此D选项舞台上最多可以看到11只Crab是正确的。题目中要求说法错误的选项因此正确答案为C。
7、默认小猫角色,执行下列程序,小猫的坐标为?(B)

A、(-10,20)
B、(-10,0)
C、(0,20)
D、(-10,10)
【答案】B
【解析】本题考察移动的相关知识。执行程序,将小猫移动到x=0,y=0的位置,面向0度方向,重复执行3次,移动10步,重复执行10次左转9度,即共左转90度,然后y坐标增加10,如果小猫的y坐标值大于20,则设置小猫的y坐标为0。第一次循环后,小猫移动到x=0,y=20的位置;第二次循环后,小猫移动到x=-10,y=0的位置;第三次循环后,小猫移动到x=-10,y=0的位置。所以三次循环后,小猫的坐标为(-10,0)。正确答案为B。
8、默认小猫角色,运行程序1和程序2,关于变量“i”取值描述正确的是?(C)

A、运行程序1和程序2作用相同,鼠标在小猫身上按下并松开后使变量“i”增加1
B、运行程序1和程序2,都不能使变量“i”增加1
C、运行程序1,鼠标在小猫身上按下并松开后,变量“i”才会增加1;运行程序2,鼠标在小猫身上按下不需要松开,变量“i”立即增加1
D、运行程序1,鼠标在小猫身上按下不需要松开,变量“i”立即增加1;运行程序2,鼠标在小猫身上按下并松开后,变量“i”才会增加1
【答案】C
【解析】本题考察变量的相关知识。程序1的作用是鼠标在小猫身上按下并松开后变量i增加1,程序2的作用是鼠标在小猫身上按下后不需要松开变量i就会增加1,因此D选项错误,C选项正确。由前面可知程序1和程序2的作用不同,因此A选项错误。程序1和程序2都可以使变量i增加1,因此B选项错误。正确答案为C。
9、下列有关自制积木说法正确的是?(D)
A、创建自制积木时,参数只能添加数字和文本
B、创建自制积木后,不能再修改参数
C、在创建的自制积木中,不能使用广播积木块
D、使用“制作新的积木”绘制图形时,为了不显示绘制过程而直接画出图形,需在“制作新的积木”窗口中选择“运行时不刷新屏幕”
【答案】D
【解析】本题考察自制积木的相关知识。在创建自制积木时,参数不仅可以是数字和文本,还可以是布尔值(真假值)等其他类型的数据,因此A选项错误。创建自制积木后,可以随时修改参数和代码逻辑,因此B选项错误。在创建的自制积木中,可以使用广播积木块,以便在不同的程序块之间进行通信和交互,因此C选项错误。
使用"制作新的积木"绘制图形时,如果要直接画出图形而不显示绘制过程,可以在"制作新的积木"窗口中选择"运行时不刷新屏幕",因此D选项正确。正确答案为D。
10、默认小猫角色,执行下列程序,小猫说出的值是?(C)

A、6
B、7
C、8
D、10
【答案】C
【解析】本题考察变量计算。执行程序,设置变量a=3,变量b=2;调用计算函数,将变量a增加2重复执行2次后,变量a=7;然后将变量a增加1后输出变量a的值为8。正确答案为C。
11、默认小猫角色,执行下列程序,绘制的图形是?(D)

A、
B、
C、
D、
【答案】D
【解析】本题考察画笔和旋转。执行程序,隐藏小猫角色,将小猫角色移动到(0,0)位置,然后擦除所有的笔画,将画笔颜色设置为红色,粗细设置为5。调用绘图函数,落笔面向45度方向,移动90步,然后左转90度,移动45步,最后左转45度,移动90步后抬笔。因此共有三段线段,线段比例分别为2:1:2,只有A选项和D选项符合条件,因为,第一笔后转动角度为90,第二笔后转动角度为90度,只有D选项符合条件。正确答案为D。
12、默认小猫角色,执行下列程序,小猫最后说出的结果是?(A)

A、10,225
B、10,193
C、11,225
D、11,193
【答案】A
【解析】本题考察列表和变量计算。执行程序,删除列表list中的全部项目。调用计算函数,设置变量x=13,变量sum=0,重复判断变量x除以4的余数是否小于2,如果小于2,则将变量x的值添加到列表list中,并给变量sum增加变量x的值,每次循环将变量x增加1,重复执行20次。则列表中添加的项目有13,16,17,20,21,24,25,28,29,32,变量sum=225。正确答案为A。
13、斐波那契数列是指这样的数列:数列的第一个和第二个数都为1,接下来每个数都等于前面2个数之和。默认小猫角色,下列哪个程序能够求出斐波那契数列中第k(k≥3)个数是多少?(D)
A、
B、
C、
D、
【答案】D
【解析】本题考察斐波那契数列的计算。斐波那契数列中第k个数等于第k-1和第k-2的和,所以输出的结果C的值在循环中应该是将C设为变量a+变量b的和,只有B选项和D选项符合条件;因为a表示第k-2的值,b表示第k-1的值,所以每次循环先将第k-2的值设为第k-1的值,然后再将第k-1的值设为本次循环计算得到的值,即需要先将变量a的值设为变量b的值,然后将变量b的值设置变量c的值,只有D选项符合条件。正确答案为D。
14、在排序算法中两两比较排序记录项,将那些与排序要求不符的记录交换位置,直到排好序为止的排序方法是?(B)
A、插入排序
B、交换排序
C、选择排序
D、并归排序
【答案】B
【解析】本题考察排序算法。插入排序:通过构建有序序列,对未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。不是两两比较后交换位置的排序方法,A选项错误。交换排序:通过比较相邻的元素,如果它们的顺序错误就把它们交换过来。是通过两两比较后交换位置的排序方法,因此B选项是正确的。选择排序:每次从未排序的数据中选择最小(或最大)的元素,放到已排序序列的末尾。不是通过两两比较后交换位置的排序方法,C选项错误。归并排序:采用分治法的一个非常典型的应用,将已有序的子序列合并,得到完全有序的序列。不是通过两两比较后交换位置的排序方法,D选项错误。正确答案为B。
15、一球从某一高度落下(单位米),每次落地后反跳回高度的一半,再落下。默认小猫角色,下列哪个选项能够计算出球在第10次落地时经过的米数?(A)
A、
B、
C、
D、
【答案】A
【解析】因为第一次只有下落,所以cnt先初始化为h,第二次高度减半,但是会有弹起+下落,所以还是经过原h米,循环内部会先累加h再除以2,一共循环剩余的9次,所以选A。正确答案为A。
二、判断题(共10题,每题2分,共20分)
|
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
答案 |
√ |
√ |
√ |
× |
× |
√ |
× |
√ |
√ |
√ |
1、小杨今年春节回奶奶家了,奶奶家的数字电视要设置ip地址并接入到WIFI盒子才能收看节目,那这个WIFI盒子具有路由器的功能。(√)
【答案】正确√
【解析】本题考查路由器的相关知识。路由器负责将网络中的数据包进行转发,使得连接到路由器的设备可以相互通信,并且连接到Internet。如果WIFI盒子需要设置IP地址并接入到数字电视,那么它必须能够连接到网络并且具有路由器的功能。因此,具有这样的功能的WIFI盒子可以视为一种路由器,故此题正确。
2、自定义绿色小球角色,变量ID为私有变量,执行下列程序,能够绘制出如下所示图形(注:颜色特效140为红色)。(√)


【答案】正确√
【解析】本题考查克隆和移动的相关知识。执行程序,将绿色小球角色隐藏并移动到(-200,100)的位置,面向90度方向,擦除所有的笔画,设置变量N=5。调用绘图函数绘制五个正方形格子,然后重复克隆五次,每次克隆时,将私有ID增加1并移动80步进入对应的正方形表格,生成的克隆体启动时显示角色,并且将克隆的第三个小球的颜色设置为红色。五个正方形格子,五个小球,其中第三个小球为红色,其余为绿色,与题中描述的结果一致,故此题正确。
3、默认小猫角色,输入数字10,执行下列程序,小猫最后说出146。(√)

【答案】正确√
【解析】本题考查多变量计算的相关知识。执行程序,设置变量a=1,设置变量b=输入的数字10,b的字符数为2,所以重复执行2次循环。第一次循环中,10<20成立,将变量a的值增加12(1和10/4的余数2连接得到),所以变量a=13,将变量b的值设为10*(10/4的余数2),所以变量b=20.第二次循环,20<20不成立,将变量a的值增加133(13和(2+1)连接得到),所以变量a=146。两次循环后输出变量a=146,故此题正确。
4、默认小猫角色,执行下列程序,可以产生下图所示的列表。(×)


【答案】错误×
【解析】本题考查变量计算和列表的相关知识。执行程序,删除list列表中的所有项目,设置变量i=0,重复执行6次循环,每次循环变量i的值增加1。循环中在第i项前插入值,而i的初始值为0,因此在list列表中六次循环后共有五个项目;在list列表中插入的值为变量x的值,而变量x的值等于1到10的随机数*3,因此列表中插入的所有值均为3的倍数,而list列表中第2项的值20不是3的倍数,故此题错误。
5、默认小猫角色,执行下列程序,小猫说出的内容是16。(×)

【答案】错误×
【解析】本题考查变量计算的相关知识。执行程序,设置变量n=0,变量i=1,重复执行停止的条件是i>5,每次循环i都会增加1,因此循环的次数为5次。第一次循环,设置变量j=1,重复执行停止的条件是j>1,内部循环1次后变量n=1,变量i=2;第二次循环,设置变量j=1,重复执行停止的条件是j>2,内部循环2次后变量n=3,变量i=3;第三次循环,设置变量j=1,重复执行停止的条件是j>3,内部循环3次后变量n=6,变量i=4;第四次循环,设置变量j=1,重复执行停止的条件是j>4,内部循环4次后变量n=10,变量i=5;第五次循环,设置变量j=1,重复执行停止的条件是j>5,内部循环5次后变量n=15,变量i=6。跳出循环,输出变量n=15与小猫说出的内容不一致,故此题错误。
6、默认小猫角色,执行下列程序后,可以找到第一个大于1000且为3的倍数的数字。(√)

【答案】正确√
【解析】本题考查变量计算的相关知识。执行程序,调用计算函数,设置变量result=3。每次循环result都会增加3,保证输出的结果result为3的倍数,重复执行停止的条件是result>1000保证是第一个大于1000且为3的倍数的数字。故此题正确。
7、默认小猫角色,执行下列程序,变量result的值为B。(×)

【答案】错误×
【解析】本题考查比大小的相关知识。执行程序,设置变量a=a,变量b=B,变量result=0,调用比较函数。比较变量a和变量b的大小,在字母中字母a的位置比字母B的位置靠前,所以字母a<字母B即a<b,所以根据条件判断设置变量result=变量a=a。故此题错误。
8、用50元钱兑换面值为1元、2元、5元的纸币共25张。每种纸币不少于1张,问有多少种兑换方案。该问题适合使用枚举算法进行求解。(√)
【答案】正确√
【解析】本题考查枚举法的相关知识。由于面值为1元、2元、5元的纸币共25张,每种纸币不少于1张,因此可以穷举所有可能的纸币组合方案。通过对所有组合进行枚举,可以找到满足条件的兑换方案的数量。虽然枚举算法在这种情况下可能会比较耗时,但由于问题规模较小(只有3种纸币,总额为50元),因此仍然是可行的解决方案。故此题正确。
9、列表list保存了6个数字,如左图所示,按从大到小顺序进行排序,插入排序第三趟的排序结果为右图所示。(√)


【答案】正确√
【解析】本题考查插入排序的相关知识。插入排序是一种简单直观的排序算法,它的基本思想是每次将一个待排序的元素插入到已经排好序的序列中的适当位置,直到全部元素插入完成。原始列表list为[15,20,10,21,7,9]。第一趟排序:以第一个项目15作为已排序序列,下一个项目20>15,将20插入到15的前面,此时排序后的序列为[20,15,10,21,7,9];第二趟排序:已排序序列为[20,15],下一个项目10<15,则10不需要移动,排序后序列为[20,15,10,21,7,9]。第三趟排序:已排序序列为[20,15,10],下一个项21>20,将21插入到20的前面,此时排序后的序列为[21,20,15,10,7,9]。故此题正确。
10、现有一段时间的温度数据,存储在列表list中。阅读下列程序,如果输入的温度是21,那么小猫说4。(√)


【答案】正确√
【解析】本题考查列表的相关知识。执行程序,输入温度t=21,设置变量cnt=0,变量i=1,重复执行停止的条件是i>列表list的项目数,每次循环i都会增加1,因此循环的次数就是列表list的项目数。循环里嵌套了一个条件判断,判断列表中第i项的值是否等于温度t的值,如果等于,就将变量cnt增加1。列表list中有4个项目的值为21,所以最后输出变量cnt的值为4,故此题正确。
三、编程题(每题25分,共50分)
|
题号 |
1 |
2 |
|
答案 |
偶数单增序列


【题目描述】
默认小猫角色和白色背景。
对于给定的正整数序列“lst”(至少包含一个偶数),请将其中的所有偶数取出并按升序排列,数据之间以#隔开存入变量result中。
比如:lst = [17, 26, 9, 13, 88, 10],最后输出的结果为10#26#88。
【输入描述】
新建列表“lst”,用于存储原始的数据。
如下图所示:

【输出描述】
新建变量“result”,用于存储得到的结果。
如下图所示:

【输入样例】
lst = [17, 26, 9, 13, 88, 10]
【输出样例】
result = 10#26#88
【输入样例】
lst = [5, 2, 26, 8, 27]
【输出样例】
result = 2#8#26
注意事项:
1、变量名的拼写(包括大小写)要和题目完全一致。
2、列表直接用“+”功能赋值进行测试即可,无需写代码赋值。

【题目大意】
编写程序,将给定的正整数序列中的所有偶数取出并按升序排列,数据之间以#隔开存入变量中并输出。
【解题思路】
1.创建一个变量result来存储得到的结果,这个变量一开始可以为空;
2.创建一个列表lst来存储原始的数据,其中包含了给定的正整数序列;
3.将列表lst按升序排列;
4.对列表lst进行遍历,将列表lst中为偶数的数据以#作为分隔符连接起来,并存入变量result中。
【参考程序】


2、完全平方数


【题目描述】
默认小猫角色和白色背景。
小杨同学有一个包含了n(1≤n≤100)个正整数的序列“lst”,他想知道其中有多少对下标组合<i,j>(1≤i,j≤n),使得lst[i]+lst[j]是完全平方数,并将结果存入变量result中。
如果x是完全平方数,则存在正整数y使得y×y=x。
例如:序列lst=[1, 4, 3, 3, 5],lst[1]+lst[3]=1+3=4,lst[1]+lst[4]=1+3=4,lst[2]+lst[5]=4+5=9,都是完全平方数,即result=3。
【输入描述】
新建列表“lst”,用于存储n个正整数。
如下图所示:

【输出描述】
输出一个非负数存储在变量“result”中,表示有多少对下标组合<i,j>(1≤i,j≤n),使得lst[i]+lst[j]是完全平方数。
如下图所示:

【输入样例】
lst = [1, 4, 3, 3, 5]
【输出样例】
result = 3
【输入样例】
lst = [3, 5]
【输出样例】
result = 0
注意事项:
1、变量名的拼写(包括大小写)要和题目完全一致。
2、列表直接用“+”功能赋值进行测试即可,无需写代码赋值。

【题目大意】
编写程序,判断给定的正整数序列中多少对下标组合<i,j>满足lst[i]+lst[j]是完全平方数。
【解题思路】
创建一个列表lst来存储包含了n个正整数的序列;
创建一个变量result用于存储满足条件的下标对数目,并将其初始化为0;
使用两个嵌套的循环来遍历列表lst,寻找所有可能的下标对组合<i,j>,其中i 和j都在范围1到列表lst项目数之间;
在内部循环中,判断lst[i]+lst[j]是否是完全平方数。如果是,则将result的值加1;
循环结束后,result的值即为满足条件的下标对数目。
【参考程序】


技术支持:王新月
策划:GESP技术委员会副主席 刘晓庆




1. GESP微信:关注“CCF GESP”公众号,点击“GESP小助手”即可交流。
2. GESP邮箱:gesp@ccf.org.cn
注:请在邮件中详细描述咨询的问题并留下考生的联系方式及姓名、身份证号,以便及时有效处理。
3. GESP电话:0512-67656856
咨询时间:周一至周五(法定节假日除外)上午 8:30-12:00;下午 13:00-17:30
扫码关注GESP公众号,了解更多资讯

