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

相关推荐
khddvbe2 小时前
C++并发编程中的死锁避免
开发语言·c++·算法
wWYy.3 小时前
STL:list
开发语言·c++
小比特_蓝光4 小时前
vector模拟实现
c++
咱就是说不配啊4 小时前
3.19打卡day33
数据结构·c++·算法
2501_924952694 小时前
嵌入式C++电源管理
开发语言·c++·算法
2401_842623654 小时前
C++中的访问者模式高级应用
开发语言·c++·算法
favour_you___5 小时前
C++实现的高性能内存池项目
c++
ℳ๓₯㎕.空城旧梦5 小时前
C++中的解释器模式
开发语言·c++·算法
想七想八不如114085 小时前
面向对象程序设计--模拟题2查漏补缺
c++·考研