GESP2026年3月认证C++四级( 第二部分判断题(1-10))


🌟 第1题:变量会不会变成15?

(答案:✅️ 正确)


1、🧙 故事

小明有一个数:

复制代码
a = 5

他把 a 送进一个"加工函数"。

但是!!这个函数是:

👉 引用传递(本人去了)


2、🧠 关键点

复制代码
void add10(int &x) { x += 10; }

👉 这里的 &x 是"引用的本人"!


3、🎯 结果

函数里改了:

复制代码
a = 15

外面:

复制代码
a 也改为 15!

4、✔ 答案:✅️ 正确



🌟 第2题:引用能不能改绑?

(答案:✅ 对)


1、🧙 故事

引用就像"认主人" 🐶

复制代码
int a = 5;
int &r = a;

👉 r 已经认定 a 了!


2、🧠 能不能改?

复制代码
int b = 10;
r = b;

⚠️ 这不是改绑!

👉 是把 b 的值赋给 a!


3、🎯 结论

引用一旦绑定:

👉 不能再换人!


4、✔ 答案:✅️ 正确



🌟 第3题:输出是不是5?

(答案:❌ 错)


1、🧙 故事

这是一个二维数组地址计算题:

复制代码
&a[1][2] - &a[0][1]

2、🧠 关键点

数组在内存是连续的!

二维数组:

复制代码
a[0][0] a[0][1] a[0][2]
a[1][0] a[1][1] a[1][2]

3、🎯 数距离

👉 从 a[0][1] 到 a[1][2]

数一数:

复制代码
a[0][1] → a[0][2] → a[1][0] → a[1][1] → a[1][2]

👉 一共走了 4 步!


4、✔ 输出不是5,应该是4。


5、 答案:❌ 错



🌟 第4题:函数重载会成功吗?

(答案:❌ 错)


1、🧙 故事

有两个函数:

复制代码
int calc(int x);
int calc(int x, int y=10);

2、🧠 问题来了!

调用:

复制代码
calc(5);

👉 会匹配哪个?


3、💥 冲突!

两个都能用:

  • calc(int x)

  • calc(int x, int y=10)

👉 编译器懵了 😵


4、修改方案:

方案1:移除默认参数,明确重载逻辑

cpp 复制代码
// 声明两个明确的重载版本
int calc(int x);          // 单参数版本
int calc(int x, int y);   // 双参数版本

// 定义
int calc(int x) { return x * 2; }
int calc(int x, int y) { return x * y; }

int main() {
    cout << calc(5) << endl;     // 调用单参数版本
    cout << calc(5, 10); // 调用双参数版本
}

方案2:保留默认参数,但删除单参数版本

cpp 复制代码
// 声明(含默认参数)
int calc(int x, int y = 10);

// 定义(唯一版本)
int calc(int x, int y) { return x * y; }

int main() {
    cout << calc(5); // 唯一匹配:calc(5, 10)
}

5、答案:❌ 错



🌟 第5题:输出是不是2010?

(答案:✅ 对)


1、🧙 故事

有两个 x:

复制代码
int x = 10;   // 全局

void f(){
    int x = 20; // 局部
}

2、🧠 执行:

复制代码
f();      → 输出 20
cout<<x;  → 输出 10

3、🎯 最终输出:

复制代码
2010

4、✔ 答案:✅️ 正确



🌟 第6题:指针会自动变 nullptr 吗?

(答案:❌ 错)


1、🧙 故事

小明创建一个指针:

复制代码
int *p;

他以为:

👉 p 会自动变成 nullptr


2、🧠 真相!

❌ 不会自动初始化!

👉 p 里面是"随机垃圾值" 💣


3、⚠️ 危险!

使用未初始化指针:

👉 可能程序崩溃!


4、答案:❌ 错



🌟 第7题:代码有没有语法错误?

(答案:✅ 对)


1、🧙 结构体嵌套

(1)结构体定义:

cpp 复制代码
struct GameCharacter {
    string name;
    int level;
    float position_x;
    float position_y;
    struct Equipment {
        string weapon;
        int attack_bonus;
        int defense_bonus;
    } equipment;
    struct Skill {
        string name;
        int damage;
    } skills[8];
    int skill_count;
};

(2)EquipmentSkill作为GameCharacter的内部结构体是合法的,符合C++标准。


(3)直接在结构体内部定义并实例化(如equipment成员)是允许的。


2、✔ 答案:✅️ 正确



🌟 第8题:能不能写入文件?

(答案:❌ 错)


1、🧙 故事

代码:

复制代码
ofstream fout("data.txt");
cout << "Hello";

2、🧠 问题在哪?

(1)👉 输出用的是:

复制代码
cout(屏幕)

(2)而不是:

复制代码
fout(文件)

3、🎯 结果

文件是空的 😢


4、答案:❌ 错



🌟 第9题:两种排序一样快吗?

(答案:❌ 错)


1、🧙 故事

有两个排序选手:

插入排序 🐢

选择排序 🐢


2、🧠 虽然:

它们都是:

复制代码
O(n²)

3、⚠️ 但实际!

👉 插入排序在"接近有序"时非常快!

👉 选择排序一直慢


4、✔ 不能互相替代


5、答案:❌ 错



🌟 第10题:递推时间复杂度是多少?

(答案:❌ 错)


1、🧙 故事

这是一个斐波那契程序:

复制代码
for(int i=2;i<=n;i++)

2、🧠 分析

使用递推的方法,只有一个循环:

👉 每次只做一次加法


3、🎯 时间复杂度:

复制代码
O(n)

4、❌ 题目说是 O(2ⁿ) → 错!


5、✔ 答案:✅️ 正确


🎉 考点汇总

类型 题号
值传递 vs 引用 1、7
引用本质 2
指针安全 6
文件操作 8
排序理解 9
复杂度 10
作用域 5
二维数组地址 3
函数重载 4

相关推荐
极客BIM工作室14 小时前
OCCT开发实践:空间封闭曲线生成曲面的思考与总结
c++
澈20714 小时前
C++多态编程:从原理到实战
开发语言·c++
6Hzlia15 小时前
【Hot 100 刷题计划】 LeetCode 24. 两两交换链表中的节点 | C++ 精准指针舞步
c++·leetcode·链表
汉克老师15 小时前
GESP2025年6月认证C++五级( 第一部分选择题(9-15))
c++·贪心算法·分治算法·二分算法·gesp5级·gesp五级·高精度除法
qiqsevenqiqiqiqi15 小时前
MT2048三连 暴力→数学推导→O (n) 优化
数据结构·c++·算法
ximu_polaris15 小时前
设计模式(C++)-行为型模式-模版方法模式
c++·设计模式
码之气三段.15 小时前
十五届山东ccpc省赛补题(update)
数据结构·c++·算法
王老师青少年编程16 小时前
csp信奥赛C++高频考点专项训练之贪心算法 --【跳跃与过河问题】:过河问题
c++·算法·贪心·csp·信奥赛·跳跃与过河问题·过河问题
是个西兰花16 小时前
C++11:智能指针
开发语言·c++·智能指针·rall