5298:[GESP202603四级] 客观题
文件提交:无需freopen
内存限制:128 MB
时间限制:1.000 S
评测方式:文本裁判
金币值:
命题人:
提交:2
解决:0
题目描述
## 一、单选题(每题 2 分,共 30 分)
**第 1 题** 执行下面程序后,输出为 ( )
```cpp
01 int f(int x = 2){
02 return x * 3;
03 }
04
05 int main(){
06 cout << f() << " " << f(4);
07 }
```
- `2 12`
- `6 12`
- `6 4`
- `12 6`
**第 2 题** 执行下面代码后,输出为 ( )
```cpp
01 int main() {
02 int a = 5;
03 int* p = &a;
04 int** q = &p;
05 **q += 7;
06 cout << a << " " << *p;
07 }
```
- `5 5`
- `12 12`
- `12 5`
- `5 12`
**第 3 题** 已知:
```cpp
01 int a[3][4] = {
02 {1,2,3,4},
03 {5,6,7,8},
04 {9,10,11,12}
05 };
06 int (*p)[4] = a;
```
则表达式 `*(*(p+2)+1)` 的值为 ( )
- $6$
- $10$
- $9$
- $11$
**第 4 题** 执行下面程序后,输出为( )。
```cpp
01 void fun(int a, int &b, int *c){
02 a += 1;
03 b += 2;
04 *c += 3;
05 }
06
07 int main(){
08 int x = 1, y = 1, z = 1;
09 fun(x, y, &z);
10 cout << x << " " << y << " " << z;
11 }
```
- `2 3 4`
- `1 3 4`
- `2 1 4`
- `1 1 1`
**第 5 题** 执行下面程序后输出为 ( )
```cpp
01 int x = 3;
02 void f(int& x){
03 x += 2;
04 }
05 int main(){
06 int x = 10;
07 f(x);
08 cout << x << " " << ::x;
09 }
```
- `12 3`
- `10 5`
- `12 5`
- `10 3`
**第 6 题** 下列关于结构体初始化的写法,正确的是 ( )
- ```cpp
01 struct Point { int x, y; };
02
03 Point p = (1,2);
```
- ```cpp
01 struct Point { int x, y; };
02
03 Point p = {1,2};
```
- ```cpp
01 struct Point { int x, y; };
02
03 Point p = new Point(1,2);
```
- ```cpp
01 struct Point { int x, y; };
02
03 Point p = <1,2>;
```
**第 7 题** 执行下面代码后输出为 ( )
```cpp
01 struct S { int a; int b; };
02
03 void g(S s){ s.a += 10; }
04 void h(S& s){ s.b += 10; }
05
06 int main(){
07 S s{1,2};
08 g(s);
09 h(s);
10 cout << s.a << " " << s.b;
11 }
```
- `11 12`
- `1 12`
- `11 2`
- `1 2`
**第 8 题** 关于递推算法的描述,正确的是 ( )
- 递推表现为函数自己调用自己
- 递推从已知初值出发,利用递推关系逐步推出后续结果
- 递推只能用于指数复杂度问题
- 递推一定需要回溯
**第 9 题** 执行 `climb(6)` 的返回值为 ( )
```cpp
01 int climb(int n){
02 if(n <= 2) return n;
03 int a = 1, b = 2, c = 0;
04 for(int i = 3; i <= n; i++){
05 c = a + b;
06 a = b;
07 b = c;
08 }
09 return c;
10 }
```
- $8$
- $13$
- $5$
- $10$
**第 10 题** 某排序算法对如下数据排序(按 $score$ 升序),则下面关于该排序算法稳定性的描述中,说法正确的是( )
初始: `(90,'A'), (90,'B'), (80,'C'), (90,'D')`
排序后: `(80,'C'), (90,'A'), (90,'B'), (90,'D')`
- 不稳定,因为出现了相同分数
- 稳定,因为相同 $score$ 的相对顺序保持为 $A$ 在 $B$ 前、$B$ 在 $D$ 前
- 不稳定,因为 $C$ 跑到前面了
- 无法判断
**第 11 题** 下面代码试图把数组按升序进行“插入排序”,横线处应填写 ( )
```cpp
01 void ins(int a[], int n){
02 for(int i = 1; i < n; i++){
03 int key = a[i];
04 int j = i-1;
05 while(j >= 0 && __________){
06 a[j+1] = a[j];
07 j--;
08 }
09 a[j+1] = key;
10 }
11 }
```
- `a[j] < key`
- `a[j] > key`
- `a[j+1]> key`
- `a[j] == key`
**第 12 题** 下列代码段的时间复杂度为 ( )
```cpp
01 int cnt=0;
02 for(int i=0; i 0 && cur.score > players[i-1].scoreB`
- `i > 0 && cur.score < players[i-1].score`
- `i < n-1 && cur.score > players[i+1].score`
- `i < n-1 && cur.score < players[i+1].score`
## 二、判断题(每题 2 分,共 20 分)
**第 1 题** 下面代码执行结束时,变量 `a` 的值变成 $15$。
```cpp
01 void add10(int &x) { x += 10; }
02
03 int main() {
04 int a = 5;
05 add10(a);
06 }
```
- 正确
- 错误
**第 2 题** 引用一旦绑定某个变量,就不能再绑定其他变量。
- 正确
- 错误
**第 3 题** 执行下面代码,输出结果为 `5`。
```cpp
01 int main() {
02 int a[2][3];
03 cout << &a[1][2] - &a[0][1] << endl;
04 return 0;
05 }
```
- 正确
- 错误
**第 4 题** 下面程序可以正常编译并输出`10`。
```cpp
01 int calc(int x, int y = 10);
02 int calc(int x) { return x * 2; }
03 int calc(int x, int y) { return x * y; }
04
05 int main() {
06 cout << calc(5);
07 }
```
- 正确
- 错误
**第 5 题** 下面程序执行后输出 `2010`。
```cpp
01 int x = 10;
02 void f() { int x = 20; cout << x; }
03
04 int main() {
05 f();
06 cout << x;
07 }
```
- 正确
- 错误
**第 6 题** 在 `C++` 中,如果声明了一个指针变量但没有显式初始化,该指针会自动被初始化为 `nullptr`。
- 正确
- 错误
**第 7 题** 下面代码没有语法错误。
```cpp
01 struct GameCharacter {
02 string name;
03 int level;
04 float position_x;
05 float position_y;
06
07 struct Equipment {
08 string weapon;
09 int attack_bonus;
10 int defense_bonus;
11 } equipment;
12
13 struct Skill {
14 string name;
15 int damage;
16 } skills[8];
17 int skill_count;
18 };
```
- 正确
- 错误
**第 8 题** 下面程序能够把 `Hello` 写入 `data.txt` 文件中。
```cpp
01 ofstream fout("data.txt");
02 cout << "Hello";
03 fout.close();
```
- 正确
- 错误
**第 9 题** 由于选择排序和插入排序的时间复杂度均为 $O(n^2)$,在任何实际场景下两者的性能表现几乎相同,可以互相替代。
- 正确
- 错误
**第 10 题** 下面用递推方式计算斐波那契数列第 $n$ 项的程序,时间复杂度是$O(2^n)$。
```cpp
01 int fib(int n) {
02 if (n <= 1) return n;
03 int f0 = 0, f1 = 1, cur = 0;
04 for (int i = 2; i <= n; i++) {
05 cur = f0 + f1;
06 f0 = f1;
07 f1 = cur;
08 }
09 return cur;
10 }
```
- 正确
- 错误