CCF GESP 2024年9月认证 C++ 4级
一
单选题
第 1 题
在 C++ 中,( )正确定义了一个返回整数值并接受两个整数参数的函数。
第 2 题
在 C++ 中,形参与实参的关系描述正确的是( )。
第 3 题
运行以下代码,屏幕上将输出( )。
#include <iostream>
using namespace std;
int var = 100;
void function() {
int var = 200;
cout << var << " ";
cout << ::var << " ";
}
int main() {
cout << var << " ";
function();
var += 100;
cout << var << " ";
return 0;
}
第 4 题
运行下面代码,屏幕上输出是( )。
int arr[3] = {24, 9, 7};
int* p = arr;
p++;
cout << *p << endl;
第 5 题
运行下面代码片段的结果是( )。
int x = 20;
int y = 24;
int* p = &x;
int* q = &y;
p = q;
第 6 题
在 C++ 中,( )正确定义一个名为 student 的结构体,其中包含一个 name 字符数组和一个 age 整数?
第 7 题
在 C++ 中,( )正确声明了一个 3 行 4 列的二维数组。
第 8 题
一个二维数组定义为 int arr[3][4];(假设一个 int 变量占 4 个字节),则 int arr[0] 占用( )个字节的内存。
第 9 题
下面代码采用递推算法来实现整数 n 的阶乘($n! = n × (n - 1) × ... × 2 × 1$),则横线上应填写( )。
int factorial(int n) {
int result = 1;
for (int i = 2; i <= n; i++) {
__________________________ // 在此处填入代码
}
return result;
}
第 10 题
在排序算法中,稳定性指的是( )。
第 11 题
下面代码实现了冒泡排序函数,则横线上应填写( )。
//交换数组arr的第i个元素和第j个元素
void swap(vector<int> &arr, int i, int j) {
int tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
int bubble_sort(vector<int> &arr) {
for (int i = arr.size() - 1; i > 0; i--) {
bool flag = false; // 标志位
____________________________ // 在此处填入代码
{
if (arr[j] > arr[j + 1]) {
swap(arr, i, j);
flag = true;
}
}
if (!flag)
break; // 此轮“冒泡”未交换任何元素
}
}
第 12 题
上一题算法的时间复杂度为( )。
第 13 题
下面代码实现了插入排序函数(升序),则横线上应填写( )。
void insertion_sort(vector<int> &nums) {
for (int i = 1; i < nums.size(); i++) {
int base = nums[i], j = i - 1;
____________________________ // 在此处填入代码
{
nums[j + 1] = nums[j];
j--;
}
nums[j + 1] = base;
}
}
第 14 题
小杨用文件重定向实现在 log.txt 文件中输出日志,则下面横线上应填写( )。
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main() {
ofstream log_file("log.txt");
streambuf* original_cout = cout.rdbuf();
cout.rdbuf(log_file.rdbuf());
____________________ // 在此处填入代码
cout.rdbuf(original_cout); // 恢复原始的标准输出缓冲区
return 0;
}
第 15 题
运行下面的代码,屏幕上将输出( )。
#include <iostream>
using namespace std;
int divide(int a, int b) {
if (b == 0) {
throw runtime_error("division by zero error ");
}
return a / b;
}
int main() {
int x = 10;
int y = 0; // 设为 0 会导致除零错误
try {
int result = divide(x, y);
cout << "result: " << result << endl;
} catch (const runtime_error& e) {
cout << "caught an exception: " << e.what() << endl;
}
return 0;
}
单选题部分已到底了。