CCF GESP 2025年3月认证 C++ 4级
一
单选题
第 1 题
关于下述代码,说法错误的是( )。
int multiply(int x, int y);
int main() {
int a = 4;
int b = 5;
int result = multiply(a, b);
std::cout << "The result is: " << result << std::endl;
return 0;
}
int multiply(int x, int y) {
return x * y;
}
第 2 题
执行下述代码将输出( )。
int x = 10;
void func() { int x = 20; std::cout << x; }
int main() {
func();
std::cout << x;
return 0;
}
第 3 题
执行下述代码后,变量 a 的值为( )。
int a = 10;
int* p = &a;
*p = 20;
第 4 题
以下哪种参数传递方式可以避免拷贝大型对象?
第 5 题
执行下述代码,将输出( )。
void swap(int a, int &b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 1, y = 2;
swap(x, y);
std::cout << x << y;
return 0;
}
第 6 题
下面的描述中,( )正确定义一个名为 Person 的结构体并正确初始化了一个 Person 结构体的变量 p。
第 7 题
给定如下代码,
struct Person {
std::string name;
int age;
struct Address {
std::string street;
std::string city;
};
Address address;
};
下面描述错误的是( )。
第 8 题
假设 int arr[2][3] = {{1,2,3},{4,5,6}};,则 arr[1][2] 的值是( )。
第 9 题
下面( )正确定义了二维数组。
第 10 题
小杨正在爬楼梯,需要爬 n 阶才能到达楼顶。如果每次可以爬 1 个或 2 个台阶,下面代码采用递推算法来计算一共有多少种不同的方法可以爬到楼顶,则横线上应填写( )。
int f(int n) {
if (n == 1 || n == 2)
return n;
int f1 = 1;
int f2 = 2;
int res = 0;
for (int i = 3; i <= n; i++) {
__________________________ // 在此处填入代码
}
return res;
}
第 11 题
给定如下算法,其时间复杂度为( )。
bool f(int arr[], int n, int target) {
for (int i = 0; i < (1 << n); i++) {
int sum = 0;
for (int j = 0; j < n; j++) {
if (i & (1 << j)) {
sum += arr[j];
}
}
if (sum == target) return true;
}
return false;
}
第 12 题
下面关于排序稳定性的描述,正确的是( )。
第 13 题
对数组 arr[]={5, 3, 8, 1} 进行升序排序,执行第一轮冒泡排序后数组 arr 中的内容为( )。
第 14 题
运行下面的代码,将出现( )。
double hmean(double a, double b) {
if (a == -b)
throw runtime_error("Runtime error occurred.");
return 2.0*a*b/(a + b);
}
int main() {
double x = 10;
double y = -10;
try {
int result = hmean(x, y);
cout << "hmean: " << result << endl;
}
catch (const runtime_error& e) {
cout << "Caught: " << e.what() << endl;
} catch (...) {
cout << "Caught an unknown exception." << endl;
}
return 0;
}
第 15 题
下面哪种方式不能实现将字符串 "Happy Spring!" 输出重定向到文件 log.txt ( )。
单选题部分已到底了。