202412 GESP CCF C++八级编程等级考试认证真题
1 单选题(每题 2 分,共 30 分)
第 1 题 小杨家响应国家“以旧换新”政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5
位数字或英文字母,要求第5位必须是数字,前4位中可以有最多1位英文字母。英文字母必须是大写,而且不能是O
或I(因为容易与数字0或1混淆)。请问自编车牌共有多少种可能性?( )。
A. 100,000
B. 1,060,000
C. 1,360,000
D. 1,460,000
第 2 题 新年到,四家人在一起聚会。其中两家有三口人,另外两家有两口人。现在要安排大家在一张十人圆桌坐
下,要求一家人必须相邻就座。由于有“主座”的习俗,每个座位都被认为是不同的。请问共有多少种就座方案?(
)。
A. 8640
B. 6912
C. 144
D. 60
第 3 题 下面关于C++类继承的说法,错误的是( )。
A. 一个类可以继承多个类。
B. 一个类可以被多个类继承。
C. 一个类可以继承另一个类的子类。
D. 抽象类必须被至少一个类继承,否则会编译错误。
第 4 题 使用邻接表表达一个简单有向图,图中包含 v 个顶点、 e 条边,则该出边表中边节点的个数为( )。
A. v * ( v-1 )
B. v * v
C. 2 * e
D. e
第 5 题 以下将二维数组作为参数的函数声明,哪个是符合语法的?( )。
A. void Bubble(int a[10][], int m);
B. void Bubble(int a[][], int n, int m);
C. void Bubble(int (*a)[20], int n);
D. void Bubble(int * a[20], int n);
第 6 题 已知两个点 A 、 B 在平面直角坐标系下的坐标分别为 (xa,ya)和 (xb,yb),并分别定义变量 double xa, ya,
xb, yb; 存储坐标。假设直线 AB 的斜率存在,下列哪个表达式可以用来表达它?( )。
A. (xa - xb) / (ya - yb)
B. (xa - xb) / (yb - ya)
C. (ya - yb) / (xa - xb)
D. (ya - yb) / (xb - xa)
第 7 题 二项式 (x + y)^6的展开式中x^3y^3项的系数是( )。
A. 6
B. 15
C. 20
D. 120
第 8 题 以下关于动态规划的说法中,错误的是( )。
A. 动态规划方法有递推和递归两种实现形式。
B. 递归实现动态规划方法的时间复杂度总是不低于递推实现。
C. 动态规划方法将原问题分解为一个或多个相似的子问题。
D. 动态规划方法通常能够列出递推公式。
第 9 题 在下面的程序中,使用整数表示一种组合。整数二进制表示的某一位为1,表示该位对应的数被选中,反之
为0表示未选中。例如,从 0 - 5 这 6 个数中选出 3 个,则 0b111000 代表选中 3, 4, 5 三个数, 0b011001 代表
选中 0, 3, 4 三个数。 zuhe_next 函数按组合对应的整数由大到小的顺序,求出组合 c 的下一个组合。横线处可
以填入的是( )。
int intlow2(int c) {
return ________;
// 在此处填入选项
}
int zuhe_next_incur(int c, int n, int l) {
if (n == 1) return c;
if ((c & (1 << l)) == 0) {
int d = intlow2(c);
c = (c & ~d);
c = (c | (d >> 1));
} else {
c = (c & ~(1 << l));
c = zuhe_next_incur(c, n - 1, l + 1);
int d = intlow2(c);
c = (c | (d >> 1));
}
return c;
}
// 从n个数中选m个,当前组合为c
int zuhe_next(int c, int n, int m) {
return zuhe_next_incur(c, n, 0);
}
A. ((c - 1) ^ c)
B. (((c - 1) ^ c) + 1)
C. (((c - 1) ^ c) >> 1)
D. ((((c - 1) ^ c) + 1) >> 1)
第 10 题 下面程序的输出为( )。
#include <iostream>
using namespace std;
int main() {
int N = 15, cnt = 0;
for (int x = 0; x + x + x <= N; x++)
for (int y = x; x + y + y <= N; y++)
for (int z = y; x + y + z <= N; z++)
cnt++;
cout << cnt << endl;
return 0;
}
A. 174
B. 447
C. 816
D. 4096
第 11 题 下面最长公共子序列程序中,横线处应该填入的是( )。
#define MAX(A, B) (((A) > (B)) ? (A) : (B))
#define MIN(A, B) (((A) < (B)) ? (A) : (B))
int dp[MAX_L + 1][MAX_L + 1];
int LCS(char str1[], char str2[]) {
int len1 = strlen(str1);
int len2 = strlen(str2);
for (int i = 0; i < len1; i++)
for (int j = 0; j < len2; j++)
if (str1[i] == str2[j])
dp[i + 1][j + 1] = dp[i][j] + 1; else
________;
// 在此处填入选项
return dp[len1][len2];
}
A. dp[i + 1][j + 1] = dp[i][j + 1] + dp[i + 1][j]
B. dp[i + 1][j + 1] = MIN(dp[i][j + 1], dp[i + 1][j])
C. dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j])
D. dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j]) + 1
================================================
答案和更多内容请查看网站:【试卷中心 -- C/C++编程 五级/六级/其他】
网站链接
青少年软件编程历年真题模拟题实时更新
================================================