GESP 四级C++考试2025年3月第二部分判断题(1-10题)


第 1 题

1、题目:

函数是 C++ 中的核心概念,用于封装可重用的代码块。


2、🏭故事:程序工厂里的机器

(1)在程序王国里,有一座 机器工厂


(2)每一台机器都有名字,比如:

复制代码
int add(int a,int b)
{
    return a+b;
}

(3)这台机器叫:

复制代码
add

(4)功能:

复制代码
两个数相加

(5)只要你需要加法,就可以再用这台机器。


3、思考

(1)函数的作用就是:

复制代码
把一段代码封装起来
可以反复使用

(2)例如:

  • 排序函数

  • 求最大值函数

  • 打印函数


4、结论

题目说:

函数用于封装可重用代码

完全正确。

答案:对


第 2 题

1、题目:

在 C++ 中,函数的返回类型可以省略,默认为 int。


2、🧠故事:函数的"身份证"

(1)每个函数都要有 身份证


(2)比如:

复制代码
int add(int a,int b)

(3)这里:

复制代码
int

就是返回类型。


(4)意思是:

复制代码
函数最后会返回一个整数

3、在 C++ 里能不能省略?

(1)早期 C语言 曾经允许:

复制代码
默认返回 int

但在现代 C++ 中是绝对不允许的


(2)例如:

复制代码
add(int a,int b)

(3)编译器会说:

复制代码
错误!
不知道返回类型

4、结论

函数的返回类型不可以省略

答案:错


第 3 题

1、题目:

结构体的成员默认是 public 访问权限。


2、🏠故事:结构体小房子

(1)结构体像一座房子:

复制代码
struct Person
{
    string name;
    int age;
};

(2)房子里面有两个成员:

复制代码
name
age

3、谁可以访问?

在 C++ 里:

(1)struct 默认

复制代码
public

(2)class 默认

复制代码
private

4、举例

复制代码
Person p;
p.name = "Tom";

完全合法。


5、结论

结构体默认就是 public。

答案:对


第 4 题

1、题目:

复制代码
int arr[4] = {0,1,2,3};
int* p = arr;
p += 1;

指针 p 的值是 1。


2、📦故事:数组小盒子

(1)数组:

复制代码
arr = [0,1,2,3]

(2)内存地址是:

复制代码
arr[0] → 0x7ffee4065820
arr[1] → 0x7ffee4065824
arr[2] → 0x7ffee4065828

(3)p = arr

意思是:

复制代码
p 指向 arr[0]

(4)p += 1

指针移动一格。

变成:

复制代码
p → arr[1]

也就是地址:

复制代码
0x7ffee4065824

3、重点

p 的值是 地址,不是数组内容。

不是:

复制代码
1

而是:

复制代码
arr[1] 的地址

4、结论

题目说:

复制代码
p 的值不是 1
*p 的值 是 1

答案:错


第 5 题

1、题目:

二维数组作为函数参数时,必须显式指定所有维度大小。


2、🧱故事:大楼坐标

(1)二维数组像楼房:

复制代码
行 × 列

(2)例如:

复制代码
int arr[3][4];

(3)如果作为函数参数:

复制代码
void f(int arr[][4])

这里只写:

复制代码
列数

就够了。


3、为什么?

(1)编译器需要知道:

复制代码
每一行有多少元素

行数可以不写


(2)例如:

复制代码
void f(int arr[][4])

是合法的。


4、结论

题目说:

复制代码
二维数组作为函数参数时,必须显式指定所有维度的大小。

答案:错


第 6 题

1、题目:

递推是一种通过已知初始值和递推公式逐步求解目标值的算法。


2、🐰故事:兔子繁殖

(1)假设兔子数量:

复制代码
F1 = 1
F2 = 2

(2)之后:

复制代码
F3 = F1 + F2
F4 = F2 + F3

(3)规律:

复制代码
Fn = Fn-1 + Fn-2

3、递推三要素

1️⃣ 初始值

2️⃣ 递推公式

3️⃣ 循环计算


例如:

复制代码
for(int i=3;i<=n;i++)
    f[i]=f[i-1]+f[i-2];

4、结论

题目描述完全正确。

答案:对


第 7 题

1、题目:

冒泡排序最坏情况下复杂度是 O(n²)。


2、🫧故事:气泡排序

(1)数组:

复制代码
5 4 3 2 1

(2)第一轮:

复制代码
4 3 2 1 5

(3)第二轮:

复制代码
3 2 1 4 5

(4)第三轮:

复制代码
2 1 3 4 5

(5)第四轮:

复制代码
1 2 3 4 5

(6)比较次数:

复制代码
(n-1)+(n-2)+...+1

(7)数学公式:

复制代码
n(n-1)/2

(8)复杂度:

复制代码
O(n²)

3、结论

题目说法正确。

答案:对


第 8 题

1、题目:

插入排序在最好情况下时间复杂度是 O(n^2)。


2、📚故事:排好队的同学

(1)假设已经排好序:

复制代码
1 2 3 4 5

(2)插入排序检查时:

复制代码
只看一眼

就发现已经有序。


(3)比较次数:

复制代码
n-1

(4)复杂度:

复制代码
O(n)

3、结论

复制代码
插入排序在最好情况下时间复杂度不是 O(n^2),而是O(n)。

❌️ 答案:错误


第 9 题

1、题目:

数组

复制代码
4 3 1 5 2

第一轮选择排序后:

复制代码
{1,4,3,5,2}

2、🏆故事:找最小冠军

(1)选择排序规则:

复制代码
找到最小
放到最前

(2)原数组:

复制代码
4 3 1 5 2

(3)最小:

复制代码
1

(4)交换:

复制代码
1 3 4 5 2

3、结论:

题目说:

复制代码
1 4 3 5 2

明显不对。


答案:错


第 10 题

1、题目:

未捕获异常会调用 std::terminate 终止程序。


2、🚨故事:程序警报系统

(1)如果程序发生异常:

复制代码
throw runtime_error("error");

(2)程序会寻找:

复制代码
catch

来处理。


(3)如果没有 catch:

程序会执行:

复制代码
std::terminate()

程序直接结束。


3、结论

题目说法正确。

答案:对


10道判断题考了5大知识点

复制代码
函数
结构体
指针
排序
复杂度

记住口诀:

复制代码
函数必须有类型
结构默认是公开
指针存的是地址
排序复杂度要会
异常终止要记牢

相关推荐
格林威2 小时前
工业相机图像高速存储(C++版):内存映射文件(MMF)零拷贝方案,附海康相机实战代码!
开发语言·c++·数码相机·计算机视觉·视觉检测·工业相机·海康相机
无限进步_2 小时前
深入解析string:从设计思想到完整实现
开发语言·c++·ide·windows·git·github·visual studio
8Qi82 小时前
LeetCode热题100--189
c语言·数据结构·c++·算法·leetcode
灰色小旋风2 小时前
力扣第八题C++ 字符串转换整数
c++·算法·leetcode
melonbo2 小时前
C++ 中用于模块间通信的设计模式
开发语言·c++·设计模式
进击的雷神2 小时前
请求频率限制、嵌套数据结构、多目录聚合、地址字段重构——K展爬虫四大技术难关攻克纪实
数据结构·爬虫·python·重构
Qt程序员2 小时前
Linux .so 动态库:底层原理
linux·c++·内核·动态库
灰色小旋风2 小时前
力扣第十题C++正则表达式匹配
c++·leetcode·正则表达式
乌萨奇也要立志学C++2 小时前
【Linux】线程池(一)C++ 手写线程池:基于策略模式实现高性能日志模块
linux·c++·策略模式