#1137. GESP C++ 八 级 2024年12月真题 · 单选题
GESP C++ 八 级 2024年12月真题 · 单选题
GESP C++ 八 级 2024年12月真题(180 分钟,总分 100 分)
单选题(共 15 题,每题 2 分,共 30 分)
1. 小杨家响应国家‘以旧换新’政策,将自家的汽油车置换为新能源汽车,正在准备自编车牌。自编车牌包括5位数字或英文字母,要求第5位必须是数字,前4位中可以有最多1位英文字母。英文字母必须是大写,而且不能是O或I(因为容易与数字0或1混淆)。请问自编车牌共有多少种可能性?
{{ select(1) }}
- 100,000
- 1,060,000
- 1,360,000
- 1,460,000
2. 新年到,四家人在一起聚会。其中两家有三口人,另外两家有两口人。现在要安排大家在一张十人圆桌坐下,要求一家人必须相邻就座。由于有‘主座’的习俗,每个座位都被认为是不同的。请问共有多少种就座方案?
{{ select(2) }}
- 8640
- 6912
- 144
- 60
3. 下面关于C++类继承的说法,错误的是?
{{ select(3) }}
- 一个类可以继承多个类。
- 一个类可以被多个类继承。
- 一个类可以继承另一个类的子类。
- 抽象类必须被至少一个类继承,否则会编译错误。
4. 使用邻接表表达一个简单有向图,图中包含v个顶点、e条边,则该出边表中边节点的个数为?
{{ select(4) }}
- v x (v-1)
- v x v
- 2 x e
- e
5. 以下将二维数组作为参数的函数声明,哪个是符合语法的?
{{ select(5) }}
void Bubble(int a[10][], int m);void Bubble(int a[][], int n, int m);void Bubble(int (*a)[20], int n);void Bubble(int * a[20], int n);
6. 已知两个点A、B在平面直角坐标系下的坐标分别为 (xa, ya) 和 (xb, yb),并分别定义变量double xa, ya, xb, yb;存储坐标。假设直线AB的斜率存在,下列哪个表达式可以用来表达它?
{{ select(6) }}
- (xa - xb) / (ya - yb)
- (xa - xb) / (yb - ya)
- (ya - yb) / (xa - xb)
- (ya - yb) / (xb - xa)
7. 二项式 (x+y)6 的展开式中 x3y3 项的系数是?
{{ select(7) }}
- 6
- 15
- 20
- 120
8. 以下关于动态规划的说法中,错误的是?
{{ select(8) }}
- 动态规划方法有递推和递归两种实现形式。
- 递归实现动态规划方法的时间复杂度总是不低于递推实现。
- 动态规划方法将原问题分解为一个或多个相似的子问题。
- 动态规划方法通常能够列出递推公式。
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);
}
{{ select(9) }}
- ((c - 1) ^ c)
- (((c - 1) ^ c) + 1)
- (((c - 1) ^ c) >> 1)
- ((((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;
}
{{ select(10) }}
- 174
- 447
- 816
- 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];
}
{{ select(11) }}
dp[i + 1][j + 1] = dp[i][j + 1] + dp[i + 1][j]dp[i + 1][j + 1] = MIN(dp[i][j + 1], dp[i + 1][j])dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j])dp[i + 1][j + 1] = MAX(dp[i][j + 1], dp[i + 1][j]) + 1
12. 下列Dijkstra算法中,横线处应该填入的是?
typedef struct Edge
{
int in, out;
// 从下标in顶点到下标out顶点的边
int len;
// 边长度
struct Edge *next;
} Edge;
// v:顶点个数,graph:出边邻接表,start:起点下标,dis:输出每个顶点的最短距离
void dijkstra(int v, Edge *graph[], int start, int *dis)
{
const int MAX_DIS = 0x7fffff;
for (int i = 0; i < v; i++)
dis[i] = MAX_DIS;
dis[start] = 0;
int *visited = new int[v];
for (int i = 0; i < v; i++)
visited[i] = 0;
visited[start] = 1;
for (int t = 0;; t++)
{
int min = MAX_DIS, minv = -1;
for (int i = 0; i < v; i++)
{
if (visited[i] == 0 && min > dis[i])
{
min = dis[i];
minv = i;
}
}
if (minv < 0)
break;
visited[minv] = 1;
for (Edge *e = graph[minv]; e != NULL; e = e->next)
{
________; // 在此处填入选项
}
}
delete[] visited;
}
{{ select(12) }}
if (dis[e->out] > e->len)
dis[e->out] = e->len;if (dis[e->out] > min + e->len)
dis[e->out] = min + e->len;if (dis[e->in] > e->len)
dis[e->in] = e->len;if (dis[e->in] > min + e->len)
dis[e->in] = min + e->len;
13. 假设图 graph中顶点数v、边数e,上题程序的时间复杂度为?
{{ select(13) }}
- O(e)
- O(v2)
- O( v log v+e )
- O( (v+e) log v )
14. 下面的快速排序程序中,两处横线处分别应填入的是?
void quick_sort(int a[], int n)
{
if (n <= 1)
return;
int pivot = 0, l = 0, r = n - 1;
while (________)
{ // 在此处填入选项
while (r > pivot && a[r] >= a[pivot])
r--;
if (r > pivot)
{
int temp = a[pivot];
a[pivot] = a[r];
a[r] = temp;
pivot = r;
}
while (l < pivot && a[l] <= a[pivot])
l++;
if (l < pivot)
{
int temp = a[pivot];
a[pivot] = a[l];
a[l] = temp;
pivot = l;
}
}
quick_sort(a, pivot);
quick_sort(________); // 在此处填入选项
}
{{ select(14) }}
l < ra + pivot + 1, n - pivot - 1l < ra + pivot + 1, n - pivotl <= ra + pivot + 1, n - pivot - 1l <= ra + pivot + 1, n - pivot
15. 上题程序的时间复杂度为?
{{ select(15) }}
- O( n )
- O( n2 )
- O( 2n )
- O( n log n )
相关
在下列比赛中: