CCF GESP 2026年6月认证 C++ 4级

所有 GESP 真题,手机上也能刷 · 自动判分 · 错题自动进错题本 扫码去刷
一 单选题
共 15 道 每题 2 分 共计 30 分
第 1 题

小杨正在编写一个“数字交换器”程序,他希望通过函数交换两个变量的值。请问运行以下代码后,屏幕上输出的是( )。

void exchange(int *a, int &b) {
    int t = *a;
    *a = b;
    b = t;
}

int main() {
    int x = 100, y = 200;
    exchange(&x, y);
    cout << x << " " << y;
    return 0;
}
A

$100$ $200$

B

$200$ $100$

C

$200$ $200$

D

编译错误

第 2 题

下面程序想通过函数计算三门课总分,横线处应填入的是( )。

int sumScore(int a, int b, int c) {
    return a + b + c;
}

int main() {
    int chinese = 88, math = 95, english = 90;
    int total = __________;
    cout << total;
    return 0;
}
A

sumScore

B

sumScore(chinese, math, english)

C

sumScore(int chinese, int math, int english)

D

sumScore(a, b, c)

第 3 题

下面程序输出结果是( )。

int addOne(int x) {
    return x + 1;
}

int main() {
    int a = 6;
    cout << addOne(a) + addOne(3);
    return 0;
}
A

$9$

B

$10$

C

$11$

D

$12$

第 4 题

关于下面程序,说法正确的是( )。

void show() {
    int stars = 5;
}

int main() {
    cout << stars;
    return 0;
}
A

程序输出 5

B

程序可以通过编译,但输出随机值

C

程序不能通过编译,因为 stars 只在 show 函数中有效

D

程序不能通过编译,因为 cout 不能输出变量

第 5 题

小杨在调试一个“等级提升”系统,代码逻辑如下,执行后 *p 的值是( )。

int lv = 5, next_lv = 6;
int *p = &lv;
*p = *p + 1;
p = &next_lv;
A

5

B

6

C

lv的地址

D

next_lv的地址

第 6 题

小杨正在开发一款名为“星际网格”的游戏,他用二维数组 int map[5][4]; 来表示地图。已知 int 占 $4$ 字节,如果 map 的内存地址是 0x2000,则表达式 &map + 1 的地址值是( )。

A

0x204c

B

0x205c

C

0x2050

D

0x2058

第 7 题

执行完下面代码后,变量 val 的值是( )。

int data[] = {10, 20, 30, 40, 50};
int *ptr = data + 2;
int val = *(ptr - 1) + *(ptr + 1);
A

$50$

B

$60$

C

$70$

D

$80$

第 8 题

某班 $3$ 个小组、每组 $4$ 名同学的分数存入下面的二维数组 score,则 score[1][2] 的值是( )。

int score[3][4] = {
    {80, 81, 82, 83},
    {90, 91, 92, 93},
    {70, 71, 72, 73}
};
A

$81$

B

$90$

C

$92$

D

$72$

第 9 题

小杨定义了一个结构体 Hero 来表示游戏角色,下面哪种初始化方式会由于语法错误导致编译失败?( )。

struct Hero {
    string name;
    int hp;
};
A

Hero h = {"Arthur", 100};

B
Hero h;
h.name = "Arthur";
h.hp = 100;
C

Hero h = new Hero{"Arthur", 100};

D

Hero *p = new Hero{"Arthur", 100};

第 10 题

下面程序输出结果是( )。

struct Book {
    string title;
    int pages;
};

int main() {
    Book books[2] = {{"Math", 120}, {"Science", 150}};
    cout << books[1].title;
    return 0;
}
A

Math

B

Science

C

$120$

D

$150$

第 11 题

小杨在对“能量晶石”按亮度进行排序。如果两块晶石亮度相同,他希望保持它们在原始序列中的相对顺序。下列关于排序算法稳定性的说法,错误的是( )。

A

冒泡排序是稳定的,因为只有在左边比右边大时才交换。

B

插入排序是稳定的,因为它将元素插入到相等元素的右侧。

C

选择排序是稳定的,因为它每次选出最小元素放在前面。

D

稳定性是指排序后相等元素的相对位置不发生改变。

第 12 题

小杨的机器人正在能量踏板上跳跃,踏板编号为 $1,2,3,…$。跳到第 n 块踏板的方案数满足递推式 f(n) = f(n - 1) + f(n - 2)。若 f(1) = 1 ,f(2) = 2 ,则运行以下代码计算 jump(5) 的结果是( )。

int jump(int n) {
    if (n <= 2)
        return n;
    int a = 1, b = 2, c = 0;
    for (int i = 3; i <= n; i++) {
        c = a + b;
        a = b;
        b = c;
    }
    return c;
}
A

$5$

B

$8$

C

$13$

D

$21$

第 13 题

在“模拟实验室”程序中,为了防止除以 $0$ 导致崩溃,小杨使用了异常处理机制。执行以下代码将输出( )。

try {
    int x = 10, y = 0;
    if (y == 0) throw "Zero Error";
    cout << x / y;
} catch (int e) {
    cout << "Error Code: " << e;
} catch (const char* msg) {
    cout << "Caught: " << msg;
}
A

$0$

B

Error Code: 0

C

Caught: Zero Error

D

程序直接崩溃

第 14 题

下面代码使用某种排序算法,将数组中的元素按从小到大排序。这段代码使用的排序算法是( )。

void mystery_sort(double arr[], int n) {
    for (int i = 0; i < n - 1; i++) {
        int minPos = i;
        for (int j = i + 1; j < n; j++) {
            if (arr[j] < arr[minPos]) {
                minPos = j;
            }
        }
        double temp = arr[i];
        arr[i] = arr[minPos];
        arr[minPos] = temp;
    }
}
A

冒泡排序

B

插入排序

C

选择排序

D

非典型排序

第 15 题

小杨正在读取“冒险日志”文件 quest.txt。若文件内容为 Level 10,执行以下程序后输出为( )。

ifstream fin("quest.txt");
string s;
int v;
fin >> s >> v;
cout << s.length() * v;
A

$50$

B

$15$

C

$70$

D

$5$

单选题部分已到底了。

小程序开心码未来

微信扫码,随时随地练 GESP 真题

  • 手机刷题 · 自动判分,错题自动归档到错题本
  • 绑定网站账号后,查看答案解析等权限自动同步
开心码未来小程序二维码(微信扫一扫) 微信扫一扫