#G2509C4A. [GESP202509 四级] 客观题
[GESP202509 四级] 客观题
一、单项选择题(每题 2 分,共 30 分;每题有且仅有一个正确选项)
-
运行下面程序后变量
a的值是( )。
{{ select(1) }}
- 42
- 43
- 编译错误
- 不确定
- 以下关于数组的描述中,( )是错误的。 {{ select(2) }}
- 数组名是一个指针常量
- 随机访问数组的元素方便快捷
- 数组可以像指针一样进行自增操作
sizeof(arr)返回的是整个数组arr占用的字节数
- 给定如下定义的数组
arr,则*(*(arr + 1) + 2)的值是( )。

{{ select(3) }}
- 2
- 5
- 4
- 6
- 下面这段代码会输出( )。
int add(int a, int b = 1); // 函数声明
int main() {
cout << add(2) << " " << add(2, 3);
return 0;
}
int add(int a, int b) { // 函数定义
return a + b;
}
{{ select(4) }}
- 3 5
- 编译失败:定义处少了默认参数
- 运行错误
- 链接失败:未定义引用
- 下面这段代码会输出( )。

{{ select(5) }}
- 5 5
- 10 10
- 5 10
- 10 5
-
下面程序运行的结果是( )。

{{ select(6) }}
- 6 7
- 6 6
- 5 6
- 5 5
- 关于结构体初始化,以下哪个选项中正确的是( )。

{{ select(7) }}
Point p = (1,2);Point p = {1,2};Point p = new {1,2};Point p = <1,2>;
-
运行如下代码会输出( )。

{{ select(8) }}
- Mimi 2
- Mimi 3
- kitty 3
- kitty 2
- 关于排序算法的稳定性,以下说法错误的是( )。 {{ select(9) }}
- 稳定的排序算法不改变相等元素的相对位置
- 冒泡排序是稳定的排序算法
- 选择排序是稳定的排序算法
- 插入排序是稳定的排序算法
-
下面代码试图实现选择排序,使其能对数组
nums排序为升序,则横线上应分别填写( )。void selectionSort(vector<int>& nums) { int n = nums.size(); for (int i = 0; i < n - 1; ++i) { int minIndex = i; for (int j = i + 1; j < n; ++j) { if ( __________ ) { // 在此处填入代码 minIndex = j; } } ____________________; // 在此处填入代码 } }{{ select(10) }}
nums[j] < nums[minIndex];swap(nums[i], nums[minIndex])nums[j] > nums[minIndex];swap(nums[i], nums[minIndex])nums[j] <= nums[minIndex];swap(nums[j], nums[minIndex])nums[j] <= nums[minIndex];swap(nums[i], nums[j])
-
下面程序实现插入排序(升序排序),则横线上应分别填写( )。
void insertionSort(int arr[], int n) { for (int i = 1; i < n; i++) { int key = arr[i]; int j = i - 1; while (j >= 0 && ____________________) { // 在此处填入代码 arr[j + 1] = arr[j]; j--; } ____________________; // 在此处填入代码 } }{{ select(11) }}
arr[j] > key;arr[j + 1] = keyarr[j] < key;arr[j + 1] = keyarr[j] > key;arr[j] = keyarr[j] < key;arr[j] = key
- 关于插入排序的时间复杂度,下列说法正确的是( )。 {{ select(12) }}
- 最好情况和最坏情况的时间复杂度都是
- 最好情况是 ,最坏情况是
- 最好情况是 ,最坏情况是
- 最好情况是 ,最坏情况是
-
小杨正在爬楼梯,需要 阶才能到达楼顶,每次可以爬 阶或 阶,求有多少种不同的方法可以爬到楼顶。横线上应填写( )。
int climbStairs(int n) { if (n <= 2) return n; int prev2 = 1, prev1 = 2, current = 0; for (int i = 3; i <= n; ++i) { ________________; // 在此处填入代码(三句) } return current; }{{ select(13) }}
-
prev2 = prev1; prev1 = current; current = prev1 + prev2; -
current = prev1 + prev2; prev2 = prev1; prev1 = current; -
current = prev1 + prev2; prev1 = current; prev2 = prev1; -
prev1 = current; prev2 = prev1; current = prev1 + prev2;
-
假设有一个班级的成绩单,存储在长度为 的数组
scores中。老师想要找出所有满足scores[i] + scores[j] + scores[k] == 300的三元组,其中 。下列代码实现该功能,请问其时间复杂度是( )。int cnt = 0; for (int i = 0; i < n; i++) { for (int j = i + 1; j < n; j++) { for (int k = j + 1; k < n; k++) { if (scores[i] + scores[j] + scores[k] == 300) { cnt++; } } } }{{ select(14) }}
- 关于异常处理,以下说法错误的是( )。 {{ select(15) }}
try块中的代码可能会抛出异常catch块可以有多个,处理不同类型的异常throw语句用于抛出异常- 所有异常都必须被捕获,否则程序会崩溃
二、判断题(共 10 题,每题 2 分,共计 20 分)
-
以下代码能正确初始化指针。

{{ select(16) }}
- 正确
- 错误
- 执行下面 C++ 代码将输出 。

{{ select(17) }}
- 正确
- 错误
-
以下 C++ 代码合法。

{{ select(18) }}
- 正确
- 错误
-
执行下面 C++ 代码将输出 。

{{ select(19) }}
- 正确
- 错误
-
下面代码将二维数组
arr传递给函数f,函数内部用arr[i][j]访问元素,函数参数声明为int arr[][4]是错误的。
{{ select(20) }}
- 正确
- 错误
- 递推是在给定初始条件下,已知前一项(或前几项)求后一项的过程。 {{ select(21) }}
- 正确
- 错误
- 虽然插入排序的时间复杂度为,但由于单元操作相对较少,因此在小数据量的排序任务中非常受欢迎。 {{ select(22) }}
- 正确
- 错误
- 对整数数组
{4, 1, 3, 1, 5, 2}进行冒泡排序(将最大元素放到最后),执行一轮之后是{4, 1, 3, 1, 2, 5}。 {{ select(23) }}
- 正确
- 错误
-
以下代码只能捕获
int类型异常。
{{ select(24) }}
- 正确
- 错误
- 以下代码将
Hello写入文件data.txt。

{{ select(25) }}
- 正确
- 错误