#1328. GESP-C++四级(2023-06)

GESP-C++四级(2023-06)

CCF GESP C++ 四级 (2023 年 06 月)

一、单选题(每题 2 分,共 30 分)

1. 高级语言编写的程序需要经过以下操作,可以生成在计算机上运行的可执行代码。

{{ select(1) }}

  • 编辑
  • 保存
  • 调试
  • 编译

2. 排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数据中有两个相等记录的关键字R和S(R出现在S之前),在排序后的列表中R也一定在S前。下面关于排序稳定性的描述,正确的是:

{{ select(2) }}

  • 冒泡排序是不稳定的。
  • 插入排序是不稳定的。
  • 选择排序是不稳定的。
  • 以上都不正确。

3. 下列关于C++语言中指针的叙述,不正确的是:

{{ select(3) }}

  • 指针变量中存储的是内存地址。
  • 定义指针变量时必须指定其指向的类型。
  • 指针变量只能指向基本类型变量,不能指向指针变量。
  • 指针变量指向的内存地址不一定能够合法访问。

4. 下列关于C++语言中数组的叙述,不正确的是:

{{ select(4) }}

  • 一维数组在内存中一定是连续存放的。
  • 二维数组是一维数组的一维数组。
  • 二维数组中的每个一维数组在内存中都是连续存放的。
  • 二维数组在内存中可以不是连续存放的。

5. 下列关于C++语言中函数的叙述,正确的是:

{{ select(5) }}

  • 函数必须有名字。
  • 函数必须有参数。
  • 函数必须有返回值。
  • 函数定义必须写在函数调用前。

6. 下列关于C++语言中变量的叙述,正确的是:

{{ select(6) }}

  • 变量定义后可以一直使用。
  • 两个变量的变量名不能是相同的。
  • 两个变量的变量名可以相同,但它们的类型必须是不同的。
  • 两个变量的变量名可以相同,但它们的作用域必须是不同的。

7. 一个二维数组定义为 double array[3][10];,则这个二维数组占用内存的大小为:

{{ select(7) }}

  • 30
  • 60
  • 120
  • 240

8. 一个变量定义为 int *p = nullptr;,则下列说法正确的是:

{{ select(8) }}

  • 该指针变量的类型为 int。
  • 该指针变量指向的类型为 int。
  • 该指针变量指向的内存地址是随机的。
  • 访问该指针变量指向的内存会出现编译错误。

9. 一个二维数组定义为 int array[5][3];,则 array[1][2] 和 array[2][1] 在内存中的位置相差多少字节?

{{ select(9) }}

  • 2字节。
  • 4字节。
  • 8字节。
  • 无法确定。

10. 如果 a 为 int 类型的变量,且 a 的值为6,则执行 a &= 3; 之后,a 的值会是:

{{ select(10) }}

  • 3
  • 9
  • 2
  • 7

11. 一个数组定义为 int a[5] = {1, 2, 3, 4, 5};,一个指针定义为 int *p = &a[2];,则执行 a[1] = *p; 后,数组 a 中的值会变为:

{{ select(11) }}

  • {1, 3, 3, 4, 5}
  • {2, 2, 3, 4, 5}
  • {1, 2, 2, 4, 5}
  • {1, 2, 3, 4, 5}

12. 以下哪个函数声明在调用时可以传递二维数组的名字作为参数?

{{ select(12) }}

  • void BubbleSort(int a[][4]);
  • void BubbleSort(int a[3][]);
  • void BubbleSort(int a[][]);
  • void BubbleSort(int** a);

13. 在下列代码的横线处填写(),可以使得输出是“2010”。

1 #include<iostream>
2 using namespace std;
3 void xchg(___________) { // 在此处填入代码
4     int t = *x;
5     *x = *y;
6     *y = t;
7 }
8 int main(){
9     int a = 10, b = 20;
10     xchg(&a, &b);
11     cout<< a << " "<< b << endl;
12     return 0;
13 }

{{ select(13) }}

  • int x, int y
  • int* x, int* y
  • int a, int b
  • int& a, int& b

14. 执行以下C++语言程序后,输出结果是:

1 #include<iostream>
2 using namespace std;
3 int main(){
4     int array[3][3];
5     for(int i = 0; i < 3; i++){
6         for(int j = 0; j < 3; j++){
7             array[i][j] = i*10 + j;
8         }
9     }
10     int sum;
11     for(int i = 0; i < 3; i++){
12         sum += array[i][i];
13     }
14     cout << sum << endl;
15     return 0;
16 }

{{ select(14) }}

  • 3
  • 30
  • 33
  • 无法确定。

15. 在下列代码的横线处填写(),完成对有 n 个 int 类型元素的数组 array 由小到大排序。

1 void SelectionSort(int array[], int n) {
2     int i, j, min, temp;
3     for(i = 0; i < n - 1; i++){
4         min = i;
5         for(j = i + 1; j < n; j++)
6             if(____________) // 在此处填入代码
7                 min = j;
8         temp = array[min];
9         array[min] = array[i];
10         array[i] = temp;
11     }
12 }

{{ select(15) }}

  • array[min] > array[j]
  • array[min] > array[i]
  • min > array[j]
  • min > array[i]

二、判断题(每题2分,共20分)

1. 域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。

{{ select(16) }}

2. 数列1,1,2,3,5,8...是以意大利数学家列昂纳多·斐波那契命名的数列,从第三个数开始,每个数是前面两项之和。如果计算该数列的第n项(其中n>3)fib(n),我们采用如下方法:①令fib(1)=fib(2)=1②用循环 for i=3 to n 分别计算 f(i)③输出 fib(n)。这体现了递推的编程思想。

{{ select(17) }}

3. 在C++语言中,函数的参数默认以引用传递方式进行传递。

{{ select(18) }}

4. 在C++语言中,可以定义四维数组,但在解决实际问题时不可能用到,因为世界是三维的。

{{ select(19) }}

5. 在C++语言中,一个函数没有被调用时,它的参数不占用内存。

{{ select(20) }}

6. 在 C++语言中,如果一个函数可能抛出异常,那么一定要在 try 子句里调用这个函数。

{{ select(21) }}

7. 如果希望记录10个最长为99字节的字符串,可以将字符串数组定义为 char s[100][10];。

{{ select(22) }}

8. 字符常量 '0' 和 '\0' 是等价的。

{{ select(23) }}

9. >= 和 >>= 都是 C++ 语言的运算符。

{{ select(24) }}

10. 由于文件重定向操作,程序员在使用 C++ 语言编写程序时无法确定通过 cout 输出的内容是否会被输出到屏幕上。

{{ select(25) }}