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

所有 GESP 真题,手机上也能刷 · 自动判分 · 错题自动进错题本 扫码去刷
一 单选题
共 15 道 每题 2 分 共计 30 分
第 1 题
小杨使用指针修改计数器的值。执行下面程序后,输出结果是( )。
int count  = 8;
int *p  = &count;
*p +=  4;
cout <<  count << " " << *p;
return  0;
A
8 8
B
8 12
C
12 12
D
12 8
第 2 题
关于下面指针声明的说法,正确的是( )。
int a  = 10;
int b  = 20;
const  int *p = &a;
A
可以通过 p 修改 a 的值
B
可以令 p = &b
C
p 的指向和所指向的值都不能修改
D
p 必须始终指向 a
第 3 题
小杨用二维数组记录仓库货物数量。执行下面代码后,变量 x 的值是( )。
int goods[3][4]  = {{2, 4,  6, 8}, {10, 12, 14,  16}, {18, 20, 22,  24}};
int (*p)[4]  = goods;
int x  = *(*(p + 1) + 2);
A
12
B
14
C
20
D
22
第 4 题

下面函数用于将一个 3 行 5 列二维数组的第 r 行元素全部加 1,横线处正确的形参写法是( )。

void addOne(________, int  r) {
     for (int j = 0; j < 5; j++) {
         arr[r][j]++;
     }
}
A

int arr[][]

B

int **arr

C

int arr[][5]

D

int arr[5][]

第 5 题

执行下面程序后,输出结果是( )。

int score = 60;

void update(int &score) {
    score += 5;
}

int main() {
    int score = 80;
    update(score);
    cout << score << " " << ::score;
    return 0;
}
A

85 60

B

80 65

C

85 65

D

80 60

第 6 题

执行下面程序后,输出结果是( )。

struct Device {
    int id;
    int state;
};

void reset(Device d) {
    d.state = 0;
}

void start(Device &d) {
    d.state += 1;
}

int main() {
    Device d{7, 2};
    reset(d);
    start(d);
    cout << d.id << " " << d.state;
    return 0;
}
A

7 0

B

7 1

C

7 2

D

7 3

第 7 题
小杨定义了结构体数组,并使用指针访问其中的元素。执行下面代码后输出的是( )。
struct Book {
    string name;
    int pages;
};

int main() {
    Book books[2] = {{"C++",  120}, {"Math", 150}};
    Book *p = books + 1;
    p->pages += 10;
    cout << books[1].name <<  " " << books[1].pages;
    return 0;
}
A
C++ 120
B
Math 150
C
Math 160
D
C++ 160
第 8 题
关于冒泡排序、插入排序和选择排序,下列说法正确的是( )。
A
三种排序算法的最坏时间复杂度都是 $O(n)$。
B
冒泡排序只能从小到大排序,不能从大到小排序
C
插入排序每次将一个待排序元素插入前面已经有序的序列中
D
选择排序每轮只需要比较一次就能确定最小元素
第 9 题
某机器人每次可以向前移动 1 格或 2 格,到达第 n 格的方法数由下面函数计算。 ways(6) 的返回值是( )。
int ways(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 b;
}
A
8
B
10
C
13
D
21
第 10 题

对一组 struct student 的学生按成绩( score )升序排序。排序前后的数据如下。关于该排序的稳定性,判断正确的是( )。

struct student {
    int score;
    char id;
};

排序前:

(90, 'A'), (80, 'B'), (90, 'C'), (80, 'D')

排序后:

(80, 'B'), (80, 'D'), (90, 'C'), (90, 'A')
A

稳定,因为所有成绩已经按升序排列

B

稳定,因为分数相同不会影响排序结果

C

不稳定,因为相同成绩的 (90, 'A') 和 (90, 'C') 的相对顺序发生了改变

D

无法判断,因为没有给出排序算法的代码

第 11 题

下面代码使用插入排序将数组按升序排列,横线处应填写( )。

void insertionSort(int a[], int n) {
    for (int i = 1; i < n; i++) {
        int key = a[i];
        int j = i - 1;
        while (j >= 0 &&  __________) {
            a[j +  1] = a[j];
            j--;
        }
        a[j + 1] = key;
    }
}
A

a[j] < key

B

a[j] > key

C

a[j] == key

D

a[j + 1] > key

第 12 题

下面代码的时间复杂度是( )。

int countPairs(int a[], int n) {
    int cnt = 0;
    for (int i = 0; i < n; i++) {
        for (int j = i + 1; j < n; j++) {
            if (a[i] + a[j] == 100) {
                cnt++;
            }
        }
    }
    return cnt;
}
A

$O(1)$

B

$O(n³)$

C

$O(n)$

D

$O(n²)$

第 13 题

假设文件 data.txt 的内容如下:

Blue Sky

执行下面程序后,输出结果是( )。

int main() {
    ifstream  fin("data.txt");
    string a, b;
    fin >> a >> b;
    cout << b << "-" << a;
    fin.close();
    return 0;
}
A

Blue-Sky

B

Sky-Blue

C

Blue Sky

D

Sky Blue

第 14 题

执行下面程序后,输出结果是( )。

int main() {
    try {
        int age = -1;
        if (age < 0)
            throw age;
        cout << "A";
    } catch (const char *msg) {
        cout << "B";
    } catch (int value) {
        cout << "C" << value;
    }
    return 0;
}
A

A

B

B

C

C-1

D

程序崩溃

第 15 题

下面函数使用冒泡排序将数组按升序排列。为了在数组已经有序时提前结束,两处横线应分别填写( )。

void bubbleSort(int a[], int n) {
     for (int i = n - 1; i > 0; i--) {
         bool changed = __________;
         for (int j = 0; j < i; j++) {
             if (a[j] > a[j + 1]) {
                 int t = a[j];
                 a[j] = a[j + 1];
                 a[j + 1] = t;
                 changed = __________;
             }
         }
         if (!changed)
             break;
     }
}
A

false , true

B

true , false

C

false , false

D

true , true

单选题部分已到底了。

小程序开心码未来

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

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