佛大附属信奥 在线评测 · 分级学习
登录

GESP C++ 四级 · 2025 年 6 月认证理论卷

登录 后作答才能记录成绩

一、单选题(每题 2 分)

1. 在C++中,声明一个指向整型变量的指针的正确语法是( )。
2. 下面的函数接收一个3行4列的二维数组并输出其中元素,则横线上不能填写( )。 ```cpp void printArray(________) { for (int i = 0; i < 3; ++i) for (int j = 0; j < 4; ++j) std::cout << arr[i][j] << " "; } ```
3. 在C++中,int arr[3][4] 和 int* arr = new int[12]均可模拟一个3行4列的二维数组。关于这两种方式,下面说法错误的是( )。
4. 关于以下 C++代码,说法正确的是( )。 ```cpp int main() { greet(); return 0; } void greet() { cout << "Hello!" << endl; } ```
5. 在C++中,如果希望通过函数修改传入的结构体对象的内容,应该使用哪种参数传递方式?
6. 以下哪个选项正确描述了C++中形参和实参的区别?
7. 运行如下代码会输出( )。 ```cpp int value = 100; void print1() { int value = 50; cout << value << " "; cout << ::value << " "; } void print2() { cout << value << " "; } print1(); print2(); ```
8. 小杨在整理一副扑克牌的所有红心扑克牌,使其从小到大排列。他的做法是:最开始抓到第1张扑克牌被认为已经排好序;然后抓第2张扑克牌,将其插入至有序部分的正确位置;不断循环步骤,每次将新抓到扑克牌插入至有序部分,直至抓完所有扑克牌,这样抓牌结束时就完成了扑克牌的排序。小杨这种整理扑克牌的方式与( )排序的方式最接近。
9. 以下哪种情况是使用插入排序的合适场景?
10. 以下关于递推算法基本思想的描述,正确的是( )。
11. 给定如下算法,其时间复杂度为( )。 ```cpp bool f(int arr[], int n, int target) { for (int i = 0; i < 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. 下述斐波那契数列计算的时间复杂度是( )。 ```cpp int fibonacci(int n) { if (n == 0) return 0; if (n == 1) return 1; return fibonacci(n - 1) + fibonacci(n - 2); } ```
13. 关于下面 C++ 程序的描述,( )最准确。 ```cpp ifstream in("data.txt"); string line; while (getline(in, line)) { cout << line << endl; } ```
14. 在C++中,异常处理机制(try-catch块)的主要目的是( )。
15. 为了提高冒泡排序的效率,如果某轮"冒泡"中没有执行任何交换操作,说明数组已经完成排序,可直接返回结果,则两条横线上分别应该填写( )。 ```cpp void bubbleSortWithFlag(vector<int> &nums) { for (int i = nums.size() - 1; i > 0; i--) { bool flag; ________________ // 在此处填入代码 for (int j = 0; j < i; j++) { if (nums[j] > nums[j + 1]) { swap(nums[j], nums[j + 1]); ___________________________ // 在此处填入代码 } } if (!flag) break; } } ```

二、判断题(每题 2 分)

1. 下面C++代码正确声明了一个返回int类型、接受两个int参数的函数。 ```cpp int add(int, int); ``` ( )
2. 下面C++代码的输出是15。 ```cpp void foo(int x) { x += 5; } int main() { int a = 10; foo(a); cout << a << endl; } ``` ( )
3. 下面c++代码在一个结构体中又定义了别的结构体。这种结构嵌套定义的方式语法不正确。 ```cpp #include <string> #include <vector> using namespace std; struct Library { struct Book { struct Author { string name; int birthYear; }; string title; int year; Author author; }; string name; vector<Book> books; }; ``` ( )
4. 在C++中,相比于值传递,使用引用传递作的优点可以直接操作和修改原始变量,避免数据拷贝,提高效率。 ( )
5. 下面这段代码不合法,因为每一行都必须显式初始化3个元素。 ```cpp int arr[2][3] = {{1, 2}, {3}}; ``` ( )
6. 以下程序中使用了递推方式计算阶乘(n!),计算结果正确。 ```cpp int factorial(int n) { int res = 1; for (int i = 0; i < n; ++i) { res *= i; } return res; } ``` ( )
7. 无论初始数组是否有序,选择排序都执行n(n-1)/2次比较 ( )
8. 以下C++代码,尝试对有n个整数的数组arr进行排序。这个代码实现了选择排序算法。 ```cpp for (int i = 0; i < n - 1; ++i) { int minIndex = i; for (int j = i + 1; j < n; ++j) { if (arr[j] < arr[minIndex]) minIndex = j; } if (minIndex != i) swap(arr[i], arr[minIndex]); } ``` ( )
9. 如果一个异常在 try 块中抛出但没有任何 catch 匹配,它将在编译时报错。 ( )
10. 下面C++代码实现将 Hello 写入 data.txt。 ```cpp ofstream out("data.txt"); out << "Hello"; out.close(); ``` ( )