GESP2025年9月认证C++四级真题与解析(判断题1-10)


🌟 第 1 题
(1)以下代码能正确初始化指针。
int a = 5; int *p = a; ❌ 判断结果:错
(2)🧸 故事讲解:钥匙和房子 🏠🔑
a = 5
👉 房子里有 5 个糖果p是一把 钥匙- 但是你写的是:
int *p = a; 意思是:
👉 用“糖果数量”当地址?!
这是不对的 ❌
(3)✅ 正确写法应该是
int *p = &a; (4)🧠 小朋友口诀
👉 指针要地址,要加 &

🌟 第 2 题
(1)执行下面代码将输出 11。
int x = 10; void f() { int x = x + 1; cout << x << endl; } ❌ 判断结果:错
(2)🧸 故事讲解:影子变量 👻
在函数 f() 里:
int x = x + 1; 这是在说:
👉 重新定义一个x,用这个“还没出生的 x”,给自己加 1
⚠️ 这是未定义行为!
(3)🚫 不是 11,也不是 任何确定的值
(4)🧠 小朋友口诀
👉 在函数中,创建变量,未赋初值,是未定义行为,无法预测

🌟 第 3 题
(1)以下 C++ 代码合法。
struct Student { string name; int age; float score; }; Student* students = new Student[20]; ✅ 判断结果:对
(2)🧸 故事讲解:建一个学生班级 🏫
Student:学生模板new Student[20]:
👉 创建 20 个学生
(3)🧠 这是 使用指针,创建数组的正确写法
✔ 合法
✔ 常见
✔ Student* students = new Student[20]; new是新开一个。
(4)🧠 记忆口诀
👉 new + 类型[数量] = 一排对象

🌟 第 4 题
(1)执行下面代码将输出 10。
void func(int* p) { *p = 10; } int a = 5; func(&a); cout << a; ✅ 判断结果:对
(2)🧸 故事讲解:
a = 5:盒子里 5 个糖&a:把盒子地址给函数*p = 10:
👉 直接改盒子里的糖果数量
(3)🎯 输出结果
10 (4)🧠 记忆口诀
👉 指针参数给地址,函数就能修改原变量的值

🌟 第 5 题
(1)二维数组传参,函数参数写成 int arr[][4] 是错误的。
❌ 判断结果:错
(2)🧸 故事讲解:书架 📚
int arr[3][4]; - 行数:可以不写
- 列数:必须写!
(3)✅ 正确写法
void f(int arr[][4], int rows) (4)🧠 为什么?
因为编译器需要知道:
👉 每一行多宽
(5)🧠 记忆口诀
👉 二维数组传参,列数不能省,行数可以省

🌟 第 6 题
(1)递推是在给定初始条件下,已知前一项求后一项的过程。
✅ 判断结果:对
(2)🧸 故事讲解:接力跑 🏃♂️🏃♀️
- 第 1 个人知道
- 第 2 个靠第 1 个
- 第 3 个靠前两个……
这就是 递推
(3)📌 例子:斐波那契
f[n] = f[n-1] + f[n-2]; (4)🧠 记忆口诀
👉 前人栽树,后人乘凉
👉 递推算法,怎么算
👉 从前向后,逐步来推算

🌟 第 7 题
(1)虽然插入排序是 O(n²),但小数据下很受欢迎。
✅ 判断结果:对
(2)🧸 故事讲解:整理几张扑克牌 🃏
- 5 张牌:插入排序很快
- 10000 张牌:就慢了
(3)🎯 原因
- 操作简单
- 常数小
- 小数据很快
(4)🧠 记忆口诀
👉 数据小,插入好,移动单元比较少

🌟 第 8 题
(1)冒泡排序一轮后结果是 {4,1,3,1,2,5}。
❌️ 判断结果:错误
(2)🧸 故事讲解:气泡往上冒 🫧
原数组:
4 1 3 1 5 2 一轮冒泡(最大往后):
1 3 1 4 2 5 (3)👉 “冒泡排序的每一轮”是怎样换?
一轮冒泡排序 = 从左到右,相邻元素两两比较一次
⚠️ 注意关键词:
相邻
一次一格地比
不是“直接把最大换到最后”,
而是——一步一步冒过去。
(4)“冒泡排序三句话口诀”🫧
1️⃣ 只能比相邻
2️⃣ 一步一步换
3️⃣ 一轮结束,最大的移到最后面

🌟 第 9 题
(1)以下代码只能捕获 int 类型异常。
int main() { try { throw 42; } catch (...) { cout << "Caught" << endl; } return 0; }❌️ 判断结果:错误
(2)🧸 故事讲解:万能接球手 ⚾
catch(...)
👉 是万能接球球- 所有类型都能接
(3)🧠 记忆口诀
👉 catch 参数写啥,只抓啥
👉 catch (...)是万能接球手,所有没写的类型,它全包

🌟 第 10 题
(1)以下代码将 Hello 写入文件 data.txt。
ofstream file("data.txt"); cout << "Hello"; file.close(); ❌ 判断结果:错
(2)🧸 故事讲解:写错本子 📘
cout:写到 屏幕file:是程序中创建的 ofstream 对象,它可以写到文件"data.txt"里
(3)❌ 错在哪里?
cout << "Hello"; // ❌ 写屏幕 ✅ 正确写法
file << "Hello"; (4)🧠 记忆口诀
👉创建 ofstream 对象并打开文件,使用对象 与 << 写入内容是关键!