2023年GESP12月认证C++八级试卷解析
一、单选题(每题2分,共30分)
题号 |
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 |
1、⼩杨要从A城到B城,⼜想顺路游览⼀番。他有两个选项:1、坐⾼铁路到C城游览,再坐⾼铁或飞机到B城;2、坐船到D城游览,再坐船、⾼铁或飞机到B城。请问⼩杨从A城到B城共有⼏种交通⽅案可以选择?( )。
A. 2
B. 3
C. 5
D. 6
【答案】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 * s in(theta) / 2
B. (a + b) * s in(theta) / 20
C. a * b * cos(theta) / 2
D. sqrt(a * a + b * b - 2 * a * b * cos(theta))
【答案】A
【解析】若△ABC中,已知两边a.