GESP 2024年6月_C++四级试卷

从PDF导入:GESP 2024年6月_C++四级试卷

C++ 120分钟 总分 100.0 27 题
试卷题目预览
第1题 中级 2.0分 单选
下列代码中,输出结果是( )

int main() {
int a = 12;
int &b = a;
cout << a << " ";
b = 24;
cout << b << " ";
int c = b;
cout << c << " ";
a = 12;
cout << a << endl;
return 0;
}

A. 12 24 24 12
B. 24 12 12 24
C. 12 12 24 24
D. 24 24 12 12
第2题 中级 2.0分 单选
下面函数不能正常执行的是()
A.
B.
C.
D.
第3题 中级 2.0分 单选
下面程序输出的是()

int x = 2;
void func(int a) {
a *= 10;
}
void func2(int &a) {
a *= 10;
}
void func3(int *a) {
*a *= 10;
}
int main() {
int y = 3;
func(x);
cout << x << " ";
func2(y);
cout << y << " ";
func3(&y);
cout << y << " ";
cout << x * y << endl;
return 0;
}

A. 2 2 3 9
B. 2 10 3 9
C. 2 10 11 121
D. 2 10 3 100
第4题 中级 2.0分 单选
假设变量a的地址是0x6ffe14,下面程序的输出是( )。

int main() {
int a = 10;
int *p = &a;
cout << *p << endl;
return 0;
}

A. 10
B. 0x6ffe14
C. 0x6ffe15
D. 0x6ffe18
第5题 中级 2.0分 单选
如果下列程序输出的地址是0x6ffe00,则cout<<a+1<<endl;输出的是()

int main() {
int a[3][4];
cout << a << endl;
cout << a+1 << endl;
return 0;
}

A. 0x6ffe04
B. 0x6ffe0C
C. 0x6ffe08
D. 0x6ffe00
第6题 中级 2.0分 单选
C++中,关于文件路径说法错误的是()
A. "GESP.txt":指定与当前工作目录中的程序文件相同目录中的GESP.txt文件
B. "../data/GESP.txt":指定与当前工作目录中的程序文件上一级目录下的data目录中的GESP.txt文件
C. "./data/GESP.txt":指定与当前工作目录中的程序文件同级目录下的data目录中的GESP.txt文件
D. "GESP.txt"是绝对路径
第7题 中级 2.0分 单选
关于直接插入排序,下列说法错误的是()
A. 插入排序的最好情况是数组已经有序,此时只需要进行n-1次比较,时间复杂度为O(n)
B. 最坏情况是数组逆序排序,此时需要进行n(n-1)/2次比较以及n-1次赋值操作(插入)
C. 平均来说插入排序算法的复杂度为O(n^2)
D. 空间复杂度上,直接插入法是就地排序,空间复杂度为O(n)
第8题 中级 2.0分 单选
下列程序横线处,应该输入的是( )。

// 冒泡排序
void bubbleSort(int a[], int n) {
for (int i = 0; i < n-1; i++) {
for (int j = 1; j < n-i; j++) {
if (a[j-1] > a[j]) {
_____________; // 交换元素
}
}
}
}

A. swap(a[j],a[j+1]);
B. swap(a[j-1],a[j]);
C. swap(a[j-1],a[j+1]);
D. swap(&a[j-1],&a[j+1]);
第9题 中级 2.0分 单选
下面关于递推的说法不正确的是( )。
A. 递推表现为自己调用自己
B. 递推是从简单问题出发,一步步的向前发展,最终求得问题。是正向的
C. 递推中,问题的n要求是在计算中确定,不要求计算前就知道n
D. 斐波那契数列可以用递推实现求解
第10题 中级 2.0分 单选
关于几种排序算法的说法,下面说法错误的是( )。
A. 选择排序不是一个稳定的排序算法
B. 冒泡排序算法不是一种稳定的排序算法
C. 插入排序是一种稳定的排序算法
D. 如果排序前2个相等的数在序列中的前后位置顺序和排序后它们2个的前后位置顺序相同,则称为一种稳定的排序算法
第11题 中级 2.0分 单选
数组{45,66,23,1,10,97,52,88,5,33}进行从小到大冒泡排序过程中,第一遍冒泡过后的序列是( )。
A. {45,23,1,10,66,52,88,5,33,97}
B. {45,66,1,23,10,97,52,88,5,33}
C. {45,66,23,1,10,52,88,5,33,97}
D. {45,66,23,1,10,97,52,88,33,5}
第12题 中级 2.0分 单选
下面的排序算法程序中,横线处应该填入的是( )。

int a[8]={2,3,4,5,6,2,3,1};
for (int i=1; i<8; i++)
{
int key = a[i];
int j = i-1;
while(a[j]>key && j>=0)
{
________;
j -= 1;
}
a[j + 1] = key;
}

A. a[j]=a[j-1];
B. a[j]=a[j+1];
C. a[j+1]=a[j-1];
D. a[j+1]=a[j];
第13题 中级 2.0分 单选
下面的程序中,如果输入10 0,会输出( )。

int main() {
int a, b;
cin >> a >> b;
try {
if (b == 0) {
throw "Division by zero condition!";
}
cout << a / b << endl;
} catch (const char* msg) {
cout << msg << endl;
}
return 0;
}

A. Division by zero condition!
B. 0
C. 10
D. 100
第14题 中级 2.0分 单选
10条直线,最多可以把平面分为多少个区域( )。
A. 55
B. 56
C. 54
D. 58
第15题 中级 2.0分 单选
下面程序中,如果语句cout<<p<<endl;输出的是0x6ffe00,则cout<<++p<<endl;输出的是()

int x[10][10][10]={{0}};
int *p;
p=&x[0][0][0];
cout<cout<<++p<

A. 0x6ffe0c
B. 0x6ffe09
C. 0x6ffe06
D. 0x6ffe04
第16题 中级 2.0分 判断
int& a和&a是一样的,都是取a的地址。
T. 正确
F. 错误
第17题 中级 2.0分 判断
以下代码不能够正确执行。

int& func() {
int a = 10;
return a;
}

T. 正确
F. 错误
第18题 中级 2.0分 判断
引用是一个指针常量。
T. 正确
F. 错误
第19题 中级 2.0分 判断
下面程序两个输出结果是一样的。

T. 正确
F. 错误
第20题 中级 2.0分 判断
函数不可以调用自己。
T. 正确
F. 错误
第21题 中级 2.0分 判断
函数参数传递过程中,如果传常量值、常量引用和常量指针都是不能被修改的,它们可以防止函数对实参的值或地址进行修改。
T. 正确
F. 错误
第22题 中级 2.0分 判断
下面代码输出的值等于0。

int arr[5] = {1,2,3,4,5};
cout << arr[5] << endl; // 越界访问

T. 正确
F. 错误
第23题 中级 2.0分 判断
在下面这个程序里,a[i][j]和一个普通的整型变量一样使用。

T. 正确
F. 错误
第24题 中级 2.0分 判断

一个一维数组,至少含有一个自然数N,是一个合法的数列。可以在一维数组末尾加入一个自然数M,M不能超过一维数组末尾元素的一半,形成一个新的合法的一维数组,如果N=6,那么可以有6个不同的合法数组。

T. 正确
F. 错误
第25题 中级 2.0分 判断
插入排序算法中,平均时间复杂度是O(n^2),最坏的情况逆序情况下,达到最大时间复杂度。
T. 正确
F. 错误
第26题 中级 25.0分 编程
黑白方块

时间限制:1.0 s 内存限制:512.0 MB
小杨有一个n行m列的网格图,其中每个格子要么是白色,要么是黑色。
对于网格图中的一个子矩形,小杨认为它是平衡的当且仅当其中黑色格子与白色格子数量相同。
小杨想知道最大的平衡子矩形包含了多少个格子。

【输入格式】
第一行包含两个正整数n,m,含义如题面所示。
之后n行,每行一个长度为m的01串,代表网格图第i行格子的颜色,如果为0,则对应格子为白色,否则为黑色。
【输出格式】
输出一个整数,代表最大的平衡子矩形包含格子的数量,如果不存在则输出0。
【样例输入】

4 5
00000
01111
00011
00011
【样例输出】

16
第27题 中级 25.0分 编程
宝箱

时间限制:1.0 s 内存限制:512.0 MB
小杨发现了n个宝箱,其中第i个宝箱的价值是ai。
小杨可以选择一些宝箱放入背包并带走,但是小杨的背包比较特殊,假设小杨选择的宝箱中最大价值为x,最小价值为y,小杨需要保证x-y<=k,否则小杨的背包会损坏。
小杨想知道背包不损坏的情况下,自己能够带走宝箱的总价值最大是多少。

【输入格式】
第一行包含两个正整数n,k,含义如题面所示。
第二行包含n个正整数ai,代表宝箱的价值。
【输出格式】
输出一个整数,代表带走宝箱的最大总价值。
【样例输入】

5 1
1 2 3 1 2
【样例输出】

7
💬