#J4006. CCF-GESP编程能力等级认证真题【C042409】

CCF-GESP编程能力等级认证真题【C042409】

一、选择题。(15题,每题2分,共30分)

  1. 在 C++ 中,( )正确定义了一个返回整数值并接受两个整数参数的函数? {{ select(1) }}
  • int add(int a, int b) { return a + b; }
  • void add(int a, int b) { return a + b; }
  • int add(a, b) { return a + b; }
  • void add(int a, int b) { return a - b; }

  1. 在C++中,形参与实参的关系描述正确的是? {{ select(2) }}
  • 形参在函数调用时指定,实参在函数定义时传递
  • 形参在函数定义时指定,实参在函数调用时传递
  • 形参和实参可以互换
  • 形参和实参必须是完全相同的类型,不能有任何差异

  1. 运行以下代码,屏幕上将输出?

{{ select(3) }}

  • 100 200 100 200
  • 100 200 100 300
  • 100 200 200 200
  • 100 200 200 300

  1. 运行下面代码,屏幕上输出是?

{{ select(4) }}

  • 24
  • 9
  • 7
  • 不确定

  1. 运行下面代码片段的结果是?

{{ select(5) }}

  • 将 x 赋值为24
  • 将 y 赋值为20
  • 将 q 指向 x 的地址
  • 将 p 指向 y 的地址

  1. 在 C++ 中,( )正确定义一个名为 student 的结构体,其中包含一个 name 字符数组和一个 age 整数? {{ select(6) }}
  • struct student { char name[20]; int age; };
  • student struct { char name[20]; int age; };
  • student struct { string name; int age; };
  • struct student { char[20] name; int age; };

  1. 在 C++ 中,( )正确声明了一个 3 行 4 列的二维数组?

![](file://xHaMbc7v76bcVL64oWblq.png)

{{ select(7) }}

  • int arr[3, 4];
  • int arr[3][4];
  • int arr[4][3];
  • int arr(3, 4);

  1. 一个二维数组定义为 int arr[3][4]; (假设一个int变量占4个字节),则 int arr[0] 占用( )个字节的内存? {{ select(8) }}
  • 3
  • 4
  • 12
  • 16

  1. 下面代码采用递推算法来实现整数 n 的阶乘 (n!=n×(n1)×...×2×1)(n! = n × (n - 1) × ... × 2 × 1),则横线上应填写?

{{ select(9) }}

  • result *= i;
  • result += i;
  • result *= result;
  • result += result;

  1. 在排序算法中,稳定性指的是? {{ select(10) }}
  • 排序后数据不会丢失
  • 排序后相同元素的相对顺序保持不变
  • 排序后数据不会被修改
  • 排序后数据的时间复杂度不变

  1. 下面代码实现了冒泡排序函数,则横线上应填写?

{{ select(11) }}

  • for (int j = 0; j < arr.size() - 1; j++)
  • for (int j = arr.size() - 1; j > 0; j--)
  • for (int j = 0; j < i; j++)
  • for (int j = i-1; j <=0; j--)

  1. 上一题算法的时间复杂度为? {{ select(12) }}
  • O(n2)O(n^2)
  • O(2n)O(2^n)
  • O(1)O(1)
  • O(n)O(n)

  1. 下面代码实现了插入排序函数(升序),则横线上应填写?

{{ select(13) }}

  • while (j >= 0 && nums[j] > base)
  • while (j > 0 && nums[j] > base)
  • while (j >= 0 && nums[j] < base)
  • while (j > 0 && nums[j] < base)

  1. 小杨用文件重定向实现在 log.txt 文件中输出日志,则下面横线上应填写?

{{ select(14) }}

  • cout << "This output will go to the log file." << endl;
  • log_file << "This output will go to the log file." << endl;
  • cout >> "This output will go to the log file." >> endl;
  • log_file >> "This output will go to the log file." >> endl;

  1. 运行下面的代码,屏幕上将输出?

{{ select(15) }}

  • division by zero error result: caught an exception:
  • result: caught an exception: division by zero error
  • caught an exception: division by zero error
  • division by zero error caught an exception: division by zero error

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

  1. 代码 int a = 10; int* p = &a; 可以正确定义指针和初始化指针。 {{ select(16) }}

  1. 在 C++ 中,引用传递允许函数修改传递给它的参数的值。 {{ select(17) }}

  1. 指针的大小与其所指向的变量的数据类型的大小相同。 {{ select(18) }}

  1. 二维数组的行的大小的必须在定义时确定,列的大小可以动态变化。 {{ select(19) }}

  1. 递推算法通过逐步求解当前状态和前一个或几个状态之间的关系来解决问题。

![](file://__W3S_cAWToZOSTRQytCM.png)

{{ select(20) }}


  1. 选择排序是稳定的排序算法。

![](file://wMJDuAIyYui-xIS-XicqD.png)

{{ select(21) }}


  1. 插入排序的时间复杂度总是比冒泡排序低。

![](file://JOZxbQMpoVsJEJyk_OTk6.png)

{{ select(22) }}


  1. 在 C++ 中,如果没有捕获到异常(没有匹配的 catch 块),程序会继续执行而不会终止。

![](file://2opL30gnwuyFqDlI0m4SG.png)

{{ select(23) }}


  1. 以下代码用递推法求斐波那契数列的第 n 项,时间复杂度为指数级。

{{ select(24) }}


  1. 执行下面C++代码后,输出的是20。

{{ select(25) }}


三、​编程题。(2题,每题25分,共50分)

  1. 【黑白方块】
  2. 【区间排序】