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大知识点

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

记住口诀:

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

相关推荐
Hello-FPGA21 小时前
视觉软件工程师(机器视觉 / 科学成像方向)
c++
Lhan.zzZ21 小时前
Qt开发踩坑:QList越界问题导致程序崩溃
数据库·c++·qt
code_whiter21 小时前
C\C++5(内存管理)
c语言·c++
wangchunting1 天前
数据结构-树
java·数据结构
HABuo1 天前
【linux线程(二)】线程互斥、线程同步、条件变量详细剖析
linux·运维·服务器·c语言·c++·ubuntu·centos
Rabitebla1 天前
归并排序(MergeSort)完全指南 —— 从原理到非递归实现
c语言·数据结构·c++·算法·排序算法
墨^O^1 天前
进程与线程的核心区别及 Linux 启动全过程解析
linux·c++·笔记·学习
寒秋花开曾相惜1 天前
(学习笔记)3.9 异质的数据结构(3.9.1 结构)
c语言·网络·数据结构·数据库·笔记·学习
福楠1 天前
现代C++ | C++14甜点特性
linux·c语言·开发语言·c++
WBluuue1 天前
Codeforces Educational 188(ABCDEF)
c++·算法