2023 年 12 月认证 C++ 六级真题解析
CCF 编程能力等级认证 ,英文名 Grade Examination of Software Programming ( 以
下简称 GESP ),由中国计算机学会发起并主办 ,是为青少年计算机和编程学习者提供学业
能力验证的平台。 GESP 覆盖中小学全学段,符合条件的青少年均可参加认证。 GESP 旨在
提升青少年计算机和编程教育水平,推广和普及青少年计算机和编程教育。
GESP 考察语言为图形化( Scratch )编程、 Python 编程及 C++ 编程,主要考察学生
掌握相关编程知识和操作能力 ,熟悉编程各项基础知识和理论框架 ,通过设定不同等级的考
试目标 ,让学生具备编程从简单的程序到复杂程序设计的编程能力 ,为后期专业化编程学习
打下良好基础。
本次为大家带来的是 2023 年 12 月份 C++ 八 级认证真题解析。
一、单选题(每题 2分,共 30 分)
1、 ⼩ 杨要从 A 城到 B 城 , ⼜ 想顺路游览 ⼀ 番 。 他有两个选项: 1、坐 ⾼ 铁路 到
C 城游览 , 再坐 ⾼ 铁或飞机到 B 城 ; 2、 坐船到 D 城游览 , 再坐船 、 ⾼ 铁或飞机
到 B 城。请问 ⼩ 杨从 A 城到 B 城共有 ⼏ 种交通 ⽅ 案可以选择?( )。
A. 2
B. 3
C. 5
D. 6
【 答案 】 C
题号 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
答案 C A D B C D A C A C D B B A C
【解析 】 本题可抽象为分类计数问题 , 应使用加法原理 , 而不是乘法原理 。 答案
为 ACB 的方案数 2加上 ADB 的方案数 3=5 ,选 C。
2、以下哪个函数声明是符合语法的 ,且在调 ⽤ 时可以将 ⼆ 维数组的名字作为实
际参数传递给形式参数 a ? ( ) 。
A. void QuickSort(int a[][10], int n);
B. void QuickSort(int a[5][], int m);
C. void QuickSort(int a[][], int n, int m);
D. void QuickSort(int ** a, int n, int m);
【 答案 】 A
【解析 】 C++ 在函数中把数组作为参数进行传递时 , 只会传递数组的首地址 , 函
数中如果想要通过首地址计算数组中任意一位元素所处的地址时 ,就需要知道第
二维数组的长度,比如第二维数组长度为 10 时, a[1][3] 的地址就是 a[0][0] 的地
址 +13 ,本题的选项中只有选项 A 给出了数组第二维长度,所以本题选 A。
3、 下 ⾯ 有关 C++ 类和对象的说法 ,错误的是( )。
A. 对象的 ⽣ 命周期开始时 ,会执 ⾏ 构造函数。
B. 对象的 ⽣ 命周期结束时 ,会执 ⾏ 析构函数。
C. 类的析构函数可以为虚函数。
D. 类的构造函数可以为虚函数。
【 答案 】 D
【解析 】对象的声明周期开始和结束时会分别执行构造函数和析构函数 ,选项 A、
B 正确 。 对于选项 C、 D, 虚函数是指被 virtual 关键字修饰的成员函数 , 定义虚
函数是为了允许用基类的指针来调用派生类的该函数 。允许将析构函数定义为虚
函数,是因为有使用 “delete 基类指针 ”来销毁对象的需求,选项 C 正确。但对
象构造时必须指定准确的类 ,不能使用基类名构造派生类的对象 ,没有将构造函
数定义为虚函数的需要,选项 D 错误。
4、 使 ⽤ 邻接矩阵表达 n 个顶点的有向图 ,则该矩阵的 ⼤⼩ 为( )。
A. n× (n+1 )
B. n×n
C. n× (n -1 )
D. n× (n -1)/2
【 答案 】 B
【解析】邻接矩阵的行列均为 [0~n-1], 所以矩阵的大小为 n*n ,本题选 B。
5、5 位同学排队 ,其中 ⼀ 位同学不能排在第 ⼀ ,则共有多少种可能的排队 ⽅ 式?
( )。
A. 5
B. 24
C. 96
D. 120
【 答案 】 C
【解析】按照第 1,2,3,4,5 位的顺序依次安排同学,某位同学不能在第一位,所
以第 1位有 4种安排方法,第二位可以从剩余的 4名同学中选一位,有 4种方
法,依次类推,第 3,4,5 各有 3,2,1 种,总方案数为 4*4*3*2*1=96 ,选 C。
6、 ⼀ 个 ⽆ 向图包含 n 个顶点 ,则其最 ⼩⽣ 成树包含多少条边?( )。
A. n-1
B. n
C. n + 1
D. 最 ⼩⽣ 成树可能不存在。
【 答案 】 D
【解析 】 n个顶点组成的树包含 n-1 条边 , 但是题目没有保证图连通 , 所以可能
不存在最小生成树,选 D。
7、 已知三个 double 类型的变量 a、 b和 theta 分别表 ⽰⼀ 个三角形的两条边长
及 ⼆ 者的夹角 ( 弧度 ) , 则下列哪个表达式可以计算这个三角形的 ⾯ 积? ( )。
A. a*b *sin(theta) /2
B. (a + b) *sin(theta) /20
C. a*b*cos(theta) /2
D. sqrt(a *a+ b*b-2*a*b*cos(theta))
【 答案 】 A
【解析】若 △ ABC 中 ,已知两边 a.b 和它们的夹角 theta ,作边 a上的高 h. 则
S=(1/2)ah, 而 h/b=sin(theta), 即 h=b*sin(theta)
∴ S=(1/2)absin(theta) 选 A。
8、 对有 n 个元素的 ⼆ 叉排序树进 ⾏ 中序遍历,其时间复杂度是( )。
A. O(1)
B. O(log(n))
C. O(n)
D. O(n 2)
【 答案 】 C
【解析】树的遍历过程需要对每个元素访问一次,因此时间复杂度为 O(n) ,选
择 C。
9、假设输 ⼊ 参数 m 和 n满 ⾜ m≤n,则下 ⾯ 程序的最差情况的时间复杂度为 ( )。
A. O(log(n))
B. O(n)
C. O(n × m)
D. O(m × log( n)
【
2023年12月GESP认证C++等级考试八级真题试卷答案解析