
点击上方蓝字关注我们吧

CCF编程能力等级认证,英文名Grade Examination of Software Programming(以下简称GESP),由中国计算机学会发起并主办,是为青少年计算机和编程学习者提供学业能力验证的平台。GESP覆盖中小学全学段,符合条件的青少年均可参加认证。GESP旨在提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP考察语言为图形化编程、Python编程及C++编程,主要考察学生掌握相关编程知识和操作能力,熟悉编程各项基础知识和理论框架,通过设定不同等级的考试目标,让学生具备编程从简单的程序到复杂程序设计的编程能力,为后期专业化编程学习打下良好基础。
本次为大家带来的是2024年6月认证图形化编程四级真题解析。
GESP2024年6月认证图形化编程四级
一、单选题(共10题,每题2分,共30分)
|
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
|
答案 |
C |
B |
C |
D |
C |
D |
A |
B |
D |
C |
C |
D |
A |
A |
B |
1、小杨父母带他到某培训机构给他报名参加CCF组织的GESP认证考试的第1级,那他可以选择的认证语言有几种?( )
A、1
B、2
C、3
D、4
【答案】C
【解析】GESP认证考试第1级提供3种编程语言供考生选择: Python、图形化、C++。正确答案为C
2、下列流程图的输出结果是?( )

A、5
B、10
C、20
D、30
【答案】B
【解析】本题考察流程图的输入和输出,该流程图是双重循环结构。
|
外循环次数 |
i |
j |
j<i? |
sum |
|
1 |
0 |
0 |
0<0 |
|
|
2 |
1 |
0 |
0<1 |
0+1 |
|
1 |
1<1 |
|||
|
3 |
2 |
0 |
0<2 |
1+1 |
|
1 |
1<2 |
2+1 |
||
|
2 |
2<2 |
|||
|
4 |
3 |
0 |
0<3 |
3+1 |
|
1 |
1<3 |
4+1 |
||
|
2 |
2<3 |
5+1 |
||
|
3 |
3<3 |
|||
|
5 |
4 |
0 |
0<4 |
6+1 |
|
1 |
1<4 |
7+1 |
||
|
2 |
2<4 |
8+1 |
||
|
3 |
3<4 |
9+1 |
||
|
4 |
4<4 |
变量i控制外循环,初始值为0,当i < 5条件成立,会进入循环,外循环会进入5次;变量j控制内循环,初始值为0,当j < i条件成立,进入内循环,sun会增加1,j增加1,否则跳出内循环,i增加1。sum初始值为0,直到外循环条件不成立,退出外循环,输出sum的值为10,流程结束。正确答案为B
3、默认小猫角色,列表“字母表”依次存储从A到Z的26个大写字母,输入“JHVS BBGV”,执行下列程序,小猫说出的内容是?( )


A、FDRO XXCR
B、HFTQ ZZET
C、GESP YYDS
D、ECQN WWBQ
【答案】C
【解析】
本题考察列表中的查询数据和字符串的处理。输入:JHVS BBGV,循环9次,遍历字母,针对不同的情况做不同的处理。注意:字符数包含空格
|
i(循环次数) |
字母表是否包含? |
j=字符编号-3 |
j<0orj=0? |
result |
|
1 |
J → True |
10-3=7 |
no |
字母表的第j项=G【排除法】 |
|
2 |
H → True |
8-3=5 |
no |
第5项=E |
|
3 |
V → True |
22-3=19 |
no |
第19项=S |
|
4 |
S → True |
19-3=16 |
no |
第16项=P |
|
5 |
空格 → False |
空格 |
||
|
6 |
B → True |
2-3=-1 |
yes |
字母表的第j+26项=第25项=Y |
|
7 |
B → True |
2-3=-1 |
yes |
Y |
|
8 |
G → True |
。。。 |
。。。 |
D |
|
9 |
V → True |
。。。 |
。。。 |
S |
|
10>9√ |
跳出循环,输出 |
如果字母表包含当前字符,将j设为字母表中这个字符所在下标编号减3, 再判断如果j小于等于零,那么将字母表j+26项对应的字符拼接到result后面,否则将字母表j项对应的字符拼接到result后面,如果这个字符都不在字母表内,直接将这个字符拼接在result后面。循环结束输出result。题目中的字母表列表中的大写字母所在下标就是该字母所在26个字母表中的位置。第一次循环,遍历到第一个字符“J”,对应下标减去3,就是“J”在字母表前三个字母“G”对应的下标,这个下标是大于0的,将该位置对应的字母“G”拼接到内容为空result的变量后边,第一次循环result就更新为“G”;第二次循环,遍历到第二个字符“H”,对应下标减去3,就是“H”在字母表前三个字母“E”对应的下标,这个下标是大于0的,将该位置对应的字母“E”拼接到result的变量后边,第二次循环result就更新为“GE”;依次类推,第四次循环后,result就更新为“GESP”;第五次循环,遍历到第五个空格字符,直接拼接到result后面;第六次循环,遍历到第六个字符“B”,对应下标减去3,j为-1 变成负数,说明“B”前面不够三个字符,j加26变成25,再从字母表末尾找够三个,该位置对应的字母“Y”拼接到result的变量后边,第六次循环result就更新为“GESP Y”。依次类推,循环结束result更新为“GESP YYDS”。 正确答案为C
4、最小公倍数是指两个或多个整数公有的倍数中,最小的那个数。例如,2 和 3 的公倍数有 6、12、18 等等,其中最小的是 6,因此 6 就是 2 和 3 的最小公倍数。默认小猫角色,下面求两个正整数的最小公倍数的程序中“如果…那么…”的判断条件是?( )

A、
B、
C、
D、
【答案】D
【解析】本题考察对两个数最小公倍数的判断。将输入的两个数分别放入a和b变量,将k设为a,每次循环末尾,将k增加a,那k一直都是a的倍数,如果k也是b的倍数那么k是a和b的公倍数,第一次满足条件的k就是a和b的最小公倍数,因此条件应该是k 除以b的余数等于0,因为k一直都是a的倍数,所以k 除以a的余数也等于0,两个条件同时成立使用与连接词。正确答案为D
5、默认小猫角色,执行下列程序,输入24和16,小猫说出的结果是?( )

A、24
B、16
C、8
D、4
【答案】C
【解析】本题考察辗转相除法求两个数的最大公因。m和n的最大公因数等于n和这两个数的余数的最大公因数。24和16的最大公因数是8。正确答案为C
6、下列有关自制积木说法错误的是?( )
A、自制积木可以重复使用
B、可以创建带多个参数的自制积木
C、可以创建不带参数的自制积木
D、创建自制积木时设置的参数叫做实参,调用自制积木时填入的参数叫做形参
【答案】D
【解析】本题考察自制积木的基本概念。
A选项自制积木是可以重复使用的,这样可以提高代码的复用性和可维护性。
B选项自制积木可以带有多个参数,以便在调用时传递不同的数据。
C选项自制积木也可以不带参数,这样的积木通常用于执行固定的操作。
D选项创建自制积木时设置的参数叫做形参,调用自制积木时填入的参数叫做实参。因此这个选项是错误的。
正确答案为D
7、默认小猫角色,执行下列程序,输入整数10,小猫说出的值是( )?

A、-1
B、0
C、1
D、2
【答案】A
【解析】本题考察有参函数和多分支判断。一开始y设为0,然后输入10,将10带进“计算”函数里面,这个函数将输入的数据赋给x,对x进行三种情况判断,在x不等于零的情况下,如果x是正数,那么将全局变量y设为-1,否则将y设为1。如果x就是零,则将y设为2。输入的数据10是一个正数,所以将y设为-1,最后输出y为-1。正确答案为A
8、默认小猫角色,执行下列程序,绘制出如下图形,红框处填写的数值是?( )


A、180 90
B、90 90
C、90 180
D、180 180
【答案】B
【解析】本题考察画笔模块和多参函数。“绘制图形”函数需要传两个参数控制左转右转的角度。函数中使用变量i来控制循环次数,初始值是0,循环末尾每次增加1直到i>4,i增长到5循环结束,因此循环会执行五次,每一次会判断i除以2的余数不等于零,即i是奇数,那么将画笔左转a度,然后再将笔的颜色设为红色,否则右转b度,将笔的颜色设为绿色,然后再移动100-10*i步,因为i会越来越大,所以绘制的线会越来越短。观察绘制的图形最长一笔是在上面,是一条竖直方向的绿线,然后之后是横着的红线。因此绘制第一条绿线需要向下移动,初始方向是面向90度方向朝右,所以需要右转90度。下一次需要绘制红色的线,要向右移动,需要左转90度。正确答案为B
9、默认小猫角色,执行下列程序,小猫说出的内容是?( )

A、0
B、1
C、2
D、3
【答案】D
【解析】本题考察字符串的查找和多参函数。这段程序主要是在寻找s1中有多少字符,包含在s2中。自定义“计算”函数传入两个字符串a和b,先将result变量设为0,然后再将i设为1,使用i来控制循环次数。函数中的循环可以遍历a的每一个字符。每一次循环,将当前的字符赋给变量c,如果b中包含c,那么将result变量增加1。“计算”函数统计的就是a中的字符有多少个在b中出现过,a是“Cherry”,b是“Watermelon”,a中间三个字符“err”都在b中出现过,所以程序最后会输出3。正确答案为D
10、默认小猫角色,执行下列“删除”程序,列表list的项目数为?( )


A、10
B、9
C、8
D、7
【答案】C
【解析】本题考察列表查询和自定义函数。执行删除程序,一开始将i设为1,使用i来控制循环的次数。结束条件是i大于list项目数,这道题容易出错,因为循环里面会删除list的项从而改变list的项目数。前4次循环list前4项小于15不成立,i均自增1;第5次循环第5项是7,被删除;第6次循环list第6项是18不会遍历到8,一直遍历到列表末尾13,这一项小于15会被删除,一共被删2项,最后列表一共有8项。正确答为C
11、默认小猫角色,执行下列程序,舞台上最多会看到多少只小猫?( )


A、11
B、10
C、6
D、5
【答案】C
【解析】本题考察克隆及私有变量的相关知识点。id为私有变量,可以给每一个克隆体设置自己的唯一id。当绿旗被点击本体会移动到坐标(0,0)的位置并显示,然后执行“克隆小猫”的函数。“克隆小猫”函数会重复执行10次克隆。当克隆体启动时,如果id除以2等于0,即id是偶数的情况下,克隆体移动到坐标(0,0)的位置。i为奇数时,移动到随机位置。10个克隆体的id分别对应1到10,其中有5个偶数,所以5个克隆体加本体都在坐标(0,0)的位置,它们会重合在一起显示成一个小猫,而其余5个克隆体移动到随机位置,因此能够看到6只小猫。正确答案为C
12、默认小猫角色,执行下列程序,小猫最后说出的结果不可能的是?( )

A、176
B、187
C、196
D、200
【答案】D
【解析】本题考察随机数和广播的相关知识。当绿旗被点击,将result变量设为0,重复执行两次循环,每次循环获取x和y两个随机数,两个随机数的范围都是1到9。获取两个随机数后,调用“计算”函数将两个数拼在一起,然后累加到result变量里面。因为两个随机数的最大取值都是9,所以拼接而成的两位数最大就是99,所以两次累和不会超过99×2 = 198,而D选项超过了198,所以小猫不可能说出200。正确答案为D
13、对n个不同的元素利用冒泡法从小到大排序,在什么情况下交换的次数最多?( )
A、从大到小排列好的
B、从小到大排列好的
C、元素无序
D、元素基本有序
【答案】A
【解析】本题考察冒泡排序。当n个元素降序排列时,冒泡排序的交换次数最多,因为每一对相邻元素都需要进行比较和交换。正确答案为A
14、我们可以使用枚举的方法来寻找1到100之间的所有素数(在大于1的自然数中,除了1和该数自身外,不再有其它因数的数,称为素数)。以下是使用计算机求解该问题的几个步骤,请问正确的步骤是?( )
① 分析问题,确定待解决的任务
② 验证算法的功能和性能
③ 设计求解算法
④ 编写程序,用计算机求解
A、①③④②
B、③①②④
C、①③②④
D、③①④②
【答案】A
【解析】这道题目主要考察的是算法设计与实现的基本步骤和流程。
1.分析问题,确定待解决的任务:首先需要明确问题的要求,即找到1到100之间的所有素数。
2.设计求解算法:接下来,需要设计一个算法来解决这个问题,比如使用简单的试除法。
3.编写程序,用计算机求解:然后,将设计好的算法用编程语言实现,编写相应的程序。
4.验证算法的功能和性能:最后,对编写好的程序进行测试,验证其是否正确地找出了所有素数,并评估其性能。
正确答案为A
15、采用“除2取余,逆序排列”法可以将十进制数转换为二进制整数。例如:把140转换为二进制的计算步骤如下:
140/2 = 70 ......0
70/2 = 35 ......0
35/2 = 17 ......1
17/2 = 8 ......1
8/2 = 4 .......0
4/2 = 2 .......0
2/2 = 1 .......0
1/2 = 0 .......1
余数逆序连接后,转换为二进制的结果为10001100。默认小猫角色,下列哪个程序能够求出140对应的二进制整数?( )
A、
B、
C、
D、
【答案】B
【解析】本题考察进制转换。根据题意越往后的余数应该拼接到结果字符串result的前面,所以我们可以每次将num除以2的余数拼到result的前面,之后再去更新num变量将它设为num向下取整的结果,为下一次循环做准备。正确答案为B
二、判断题(共10题,每题2分,共20分)
|
题号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
|
答案 |
√ |
√ |
√ |
× |
√ |
× |
× |
√ |
× |
√ |
1、GESP测试是对认证者的编程能力进行等级认证,同一级别的能力基本上与编程语言无关。( )
【答案】正确√
【解析】本题考察学生对GESP测试的了解。
2、默认小猫角色,分别执行下列程序,小猫说出的内容为5。( )


【答案】正确√
【解析】本题考察列表查询。当绿旗被点击,i设为1,使用i来控制循环次数,遍历h列表。s初始值为0,用于统计列表中非0的个数。每一次循环,如果当前项等于0不成立,即当前项不等于0,那么将m设为1,否则将m设为0,判断结束然后将s增加m,因此只要当前项不等于0,s就会增加1。重复循环结束,说出s保存的值,也表示列表中不等于0的个数,一共有5个数不等于0,所以说出的内容为5,这道题正确。
3、列表“学号”存放了一组学生的学号, 运行下列程序,红框处填入

可使得小猫最后说出的结果为3。( )


【答案】正确√
【解析】本题考察列表查询。当绿旗被点击cnt变量设为0,i设为1,使用i来控制循环次数遍历学号列表。每次循环如果当前学号包含“02”,并且包含“09”,cnt变量自增1。符合条件的一共有三个:第二项、第三项和第四项,所以循环结束角色会说出结果3,这道题正确。
4、默认小猫角色,执行下列程序后,小猫最后说出的结果为6556。( )

【答案】错误×
【解析】本题考察有参函数。当绿旗被点击这段程序使用了有参函数的形参,而有参函数的形参,只能在函数内部使用,所以这道题错误。
5、默认小猫角色,执行下列程序,小猫说出的值为33。( )

【答案】正确√
【解析】本题考察算术运算和循环语句。当绿旗被点击,调用“计算”函数传入参数5,“计算”函数先将result变量设为1,将i设为1,重复执行直到i大于n。每一次进入循环会判断i的奇偶性。如果i除以2等于0,则i为偶数,那么将result乘以i再重新赋值给result,否则如果是奇数则将i累加到result里面。i为1时, result等于1+1,被更新为2;i为2时, result等于2 * 2,被更新为4;i为3时, result等于4+3,被更新为7;i为4时, result等于7*4,被更新为28;i为5时, result等于28+5,被更新为33;i为6时函数执行结束,说出result的值为33,因此题目正确。
6、默认小猫角色,执行下列程序,能够绘制出如下所示图形。( )


【答案】错误×
【解析】本题考察画笔模块和循环语句,是一个陷阱题。目标是画四个圆,但仔细观察代码,每次落笔之后就直接抬笔了,抬笔之后移动是无法画出轨迹的,所以无法实现画四个圆的效果,所以这道题错误。
7、默认小猫角色,输入水果Orange,执行下列程序,小猫最后说出5。( )

【答案】错误×
【解析】本题考察字符串处理与循环语句。输入Orange,然后调用“计算”函数,计算函数设置变量i为1,使用重复执行直到语句遍历字符串s每个字符,直到遍历到字符n。字符n是原字符串第4个字符,所以应该输出4,这道题错误。
8、默认小猫角色,执行下列“查询”积木后,变量“result”的值为1。( )


【答案】正确√
【解析】本题考察列表的遍历和查询。执行“查询“积木,将result设为30,将i设为1,遍历list列表,如果i除以2等于1,并且当前项小于result那么将当前项赋给result。当i等于1时,result被更新为18;当i等于3时,result被更新为13;当i等于5时,result被更新为1,直到循环结束,变量result的值为1,因此这道题正确。
9、在排序算法(比如,由小到大排序)中每次从全部还未排序的数据项中选择最小的数据项,并把它接在已排好的数据项末尾的排序方法是插入排序。( )
【答案】错误×
【解析】本题考察插入排序。题目中描述的是选择排序,插入排序则是通过将每一个新元素插入到已经排好序的部分中的适当位置来实现排序,因此这道题错误。
10、把整数3025从中剪开分为30和25两个数,此时再将这两数之和平方,计算结果又等于原数。
,这样的数叫“雷劈数”。执行下面程序小猫能够说出所有符合这样条件的四位数。(
)

【答案】正确√
【解析】本题考察循环枚举和算术运算。将i初始值设为1000,利用i可以遍历所有的四位数,每一次循环将i除以100的余数赋给a,a就是这四位数的最后两位数,而再将i除以100向下取整赋给b,就是取这四位数的前两位数。将a + b的和赋值给c,根据题意判断如果c * c等于这个四位数,那么这个四位数就是一个雷劈数,这道题正确。
三、编程题(每题25分,共50分)
|
题号 |
1 |
2 |
|
答案 |
1、开关灯


【题目描述】
默认小猫角色和白色背景。
假设有
盏灯(
为不大于100的正整数),从1到
按顺序依次编号,初始时全部处于开启状态;小猫做了
次开关灯的操作,第一次将灯全部关闭,第二次将编号为2的倍数的灯打开,第三次将编号为3的倍数的灯做相反处理(即,将打开的灯关闭,将关闭的灯打开),后面的操作和第三次一样,将编号为该次倍数的灯做相反处理。
请问,
次之后,哪几盏灯是关闭的,按从小到大输出其编号,其间用#号间隔。
【输入描述】
新建变量“
”,用于存储灯的数量。
新建变量“
”,用于存储做了多少次开关灯的操作。
如下图所示:

【输出描述】
新建变量“result”,用于存储得到的结果,即关闭的灯的编号,中间用#间隔。
如下图所示:

【输入样例】
N = 10;M = 10
【输出样例】
result = 1#4#9
【输入样例】
N = 10;M = 2
【输出样例】
result = 1#3#5#7#9
注意事项:
1.变量名的拼写(包括大小写)要和题目完全一致。
2.输入变量直接赋值即可,无需使用“询问并等待”积木块。
3.输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块
【题目大意】多盏灯多次开关操作,最后输出哪些灯是关闭状态。
【解题思路】
1.将N盏灯的状态保存到一个list列表里。根据题意,一开始所有的灯都开着的,可以用数字1来表示灯是开着的状态,数字0来表示灯是关闭的状态;
2.利用循环加变量i枚举多次操作;
3.根据题意,第i次操作需要把灯的编号是i的倍数的状态置反(开变关,关变开)。再利用循环加变量j枚举所有是i的倍数的灯的编号,j从i开始枚举,每次j增加i,直到j 大于list的项目数,每次判断这盏灯的状态,如果是关着的,就把它的状态变为开,否则状态更新为关;
4.M次操作结束后,遍历所以灯的状态,将灭着的灯的编号按格式保存在result变量里。
【参考程序】


2、密码位移


【题目描述】
小杨学习了加密技术移位,所有大写字母都向后按照一个固定数目进行偏移。偏移过程会将字母表视作首尾相接的环,例如,当偏移量是3的时候,大写字母A 会替换成D,大写字母Z 会替换成C,总体来看,大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ会被替换成DEFGHIJKLMNOPQRSTUVWXYZABC。
注:当偏移量是26的倍数时,每个大写字母经过偏移后会恰好回到原来的位置,即大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ经过偏移后会保持不变。
默认小猫角色和白色背景。请你帮小杨做这种移位替换。
【输入描述】
新建变量“n”(1≤n≤100),用于存储偏移量。
如下图所示:

【输出描述】
输出一个字符串存储在变量“result”中,表示在偏移量为n的情况下,大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ移位替换后的结果。
如下图所示:

【输入样例】
n = 3
【输出样例】
result = DEFGHIJKLMNOPQRSTUVWXYZABC
【样例解释】
当偏移量是3的时候,大写字母A 会替换成D,大写字母Z 会替换成C,总体来看,大写字母表ABCDEFGHIJKLMNOPQRSTUVWXYZ会被替换成DEFGHIJKLMNOPQRSTUVWXYZABC。
注意事项:
1.变量名的拼写(包括大小写)要和题目完全一致。
2.输入变量直接赋值即可,无需使用“询问并等待”积木块。
3.输出结果存放在对应变量中即可,无需使用“说…”或“说…,2秒”积木块
【题目大意】计算将所有大写字母按照一个固定数偏移之后的结果。
【解题思路】
1.完成对变量的初始化,n表示偏移量, s变量存储原大写字母表A到Z,result初始化为空,用于记录最终结果;
2.更新偏移量,字母表一共26个字母,偏移量只要是26的倍数,就相当于没有偏移,所以只需要关心n除以26的余数,将n更新为 n除以26的余数;
3.将s 字母表第 n
+
1位置及以后的大写字母按顺序拼接到result后面。前一部分每个字母偏移结果为靠后的字母,其实相当于后面的字母前移,将A偏量为n第n+1个字母到Z这部分字母前移;
4.再将字母表的前一部分按顺序拼接到result 后面。原字母表后一部分偏移的结果会超过Z,会重新从A开始偏移,后面连续n个字母对应偏移后的字母是A到原字母表第n个字母。
【参考程序】

技术支持:张楠
策划: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公众号,了解更多资讯

