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

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

学校组织到未来农场参观,小明听讲解员介绍,在智能温室中,湿度传感器可以连续检测土壤的湿度变化,并将检测到的湿度数据实时发送给中央控制器。中央控制器根据这些数据判断是否开启灌溉系统。请问,这里的湿度传感器所发挥的作用,类似于计算机系统中的哪一类组件?( )

A

处理器

B

存储器

C

输入设备

D

输出设备

第 2 题

小明去农场参观回来后就在自己的电脑上安装了一个 $3D$ 农场仿真模拟系统,因为他今年买的二手电脑有点老旧,系统运行时经常弹出“系统内存不足”的警告,导致系统卡顿严重。他计划通过增加物理内存来解决问题。请问他应该购买以下哪种硬件组件?( )

A

机械硬盘

B

内存条

C

图形显卡

D

移动硬盘

第 3 题

有关如下 $C++$ 代码的说法,正确的是( )。

float a = 3 + 3.5;
cout << a;
A

代码执行将报错。如果将 a = 3 + 3.5 改为 a = float(3) + 3.5 将能正常执行。

B

代码执行将报错。如果将 a = 3 + 3.5 改为 a = 3.0 + 3.5 将能正常执行。

C

代码能正常执行,将输出 $6$。

D

代码能正常执行,将输出 $6.5$。

第 4 题

下面选择项中,与 $C++$ 表达式 not (x > 5 or y <= 10) 等价的是( )。

A

x <= 5 or y > 10

B

x > 5 and y <= 10

C

x <= 5 and y > 10

D

not x > 5 and not y <= 10

第 5 题

小明在某开发环境中执行 $C++$ 代码 cout << (2.5 + 2.25) << ' ' << (2.2 + 2.1) 时输出 $4.75$ $4.300000000000001$,其原因最可能是( )。

A

$C++$ 的 + 运算符在处理浮点数时有时正确,有时错误

B

某些浮点数难以精确表示,导致微小误差

C

+ 运算符不能用于浮点数,只能用于整数

D

因为 cout 函数难以输出太长的数值

第 6 题

执行如下 $C++$ 程序后,当输入 $4$ 时,输出的最后一行是( )。

int n;
cin >> n;
for (int i = n; i > 0; i--) {
    for (int j = 0; j < i; j++)
        cout << j + 1 << ' ';
    cout << endl;
}
A

$0$

B

$1$

C

$1$ $2$

D

$1$ $2$ $3$ $4$

第 7 题

下面的 $C++$ 代码执行后其输出是( )。

int tnt = 0;
for (int i = 1; i < 5; i += 3) {
    for (int j = 0; j < i; j++)
        tnt += 1;
    cout << tnt << "#";
}
cout << tnt;
A

1#5#5

B

1#5#5#

C

1#5#12#12

D

$0$

第 8 题

下面的 $C++$ 代码执行之后的输出是( )。

int i;
for (i = -2; i < 2; i++)
    if (not i % 3 == 0)
        cout << i << "#";
cout << i;
A

-2#-1#1#2

B

-2#-1#1#2#3

C

1#2#3

D

0#1#2#3

第 9 题

下面的 $C++$ 代码执行后其输出是( )。

int cnt = 0, i, j;
for (i = 0; i < 3; i++) {
    j = i;
    while (j) {
        cnt += 1;
        j -= 1;
    }
}
cout << i << ' ' << j << ' ' << cnt;
A

$3$ $0$ $3$

B

$2$ $0$ $4$

C

$2$ $0$ $5$

D

$3$ $0$ $5$

第 10 题

下面 $C++$ 代码执行后其输出是( )。

int count = 0, i, j;
for (i = 1; i < 4; i++)
    for (j = 0; j < i; j++) {
        if (j % 3 != 0)
            continue;
        count += 1;
        break;
    }
cout << i << ' ' << j << ' ' << count;
A

$4$ $0$ $4$

B

$3$ $0$ $0$

C

$3$ $2$ $0$

D

$4$ $0$ $3$

第 11 题

如下 $C++$ 代码执行后输出是 1 2 3 4 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 8 9 10 11 5 6 7 。横线处应该填入的运算符是( )。

int num = 1;
for (int i = 0; i < 35; i++) {
    cout << num << " ";
    if (num _______ 10)
        num _______ 2;
    else
        num _______ 1;
}
A

> /= +=

B

>= %= +=

C

> /= =+

D

>= %= =+

第 12 题

如下数字图形在通过执行后续的 $C++$ 代码时,输入 $10$ 来输出。横线处应填入的代码是( )。

1 1 1 1 1 1 1 1 1 1
1 1 0 0 0 0 0 0 0 1
1 0 1 0 0 0 0 0 0 1
1 0 0 1 0 0 0 0 0 1
1 0 0 0 1 0 0 0 0 1
1 0 0 0 0 1 0 0 0 1
1 0 0 0 0 0 1 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 0 0 1 1
1 1 1 1 1 1 1 1 1 1
int N;
cin >> N;
for (int i = 1; i < N + 1; i++) {
    for (int j = 1; j < N + 1; j++)
        if (________)
            cout << "1 ";
        else
            cout << "0 ";
    cout << endl;
}
A

i == j and i == 1 and j == 1 and i == N and j == N

B

i == j or i == 1 or j == 1 or i == N or j == N

C

i == j or i == 0 or j == 0 or i == (N + 1) or j == (N + 1)

D

i == j and i == 1 and j == 1 and i == (N + 1) and j == (N + 1)

第 13 题

英文 $corner\ case$ 通常翻译为极端案例或边角案例,通常指正常范围以外的问题或者情形。在如下 $C++$ 代码中,变量都是整型,则 $corner\ case$ 最应该是( )。

int tnt = 0, cnt = 0;
while (1) {
    int score;
    cin >> score;
    if (score == -1)
        break;
    tnt += score;
    cnt += 1;
}
cout << tnt / cnt;
A

tnt = 0, cnt = 0 是 $corner\ case$,应分为两行

B

while(1) 是 $corner\ case$,因为 while(1) 将会导致死循环

C

cin >> score 是 $corner\ case$,因为输入数据前应该提示整型数据

D

cout << tnt / cnt 是 $corner\ case$,因为如果直接输入 $-1$,将导致执行错误,虽然这种情况较为罕见

第 14 题

如下 $C++$ 代码执行后,输入 $4$ 后,输出的数字图形是( )。

int n;
cin >> n;
for (int i = n; i > 0; i--) {
    for (int j = 0; j < n - i; j++)
        cout << "0 ";
    for (int k = 0; k < i; k++)
        cout << k + 1 << " ";
    cout << endl;
}
A
1 2 3 4
1 2 3 0
1 2 0 0
1 0 0 0
B
1 2 3 4
0 1 2 3
0 0 1 2
0 0 0 1
C
2 3 4
3 4 0
4 0 0
0 0 0
D
0 0 0 1
0 0 1 2
0 1 2 3
1 2 3 4
第 15 题

某学校举办“校园演讲比赛”,每位选手由 $8$ 位评委打分(分数为 $0∼ 10$ 的整数),且每位评委必须打分。计分规则:去掉一个最高分,去掉一个最低分。如下程序通过键盘先输入选手编号,然后依次输入 $8$ 个分数,并计算最终得分。下列说法正确的是( )。

for (int i = 0; i < 10; i++) {
    int id, score;
    printf("输入选手编号: ");
    scanf("%d", &id);

    int max_score = 0, min_score = 100; // 最高分和最低分
    int total_score = 0; // 总分

    for (int j = 1; j < 9; j++) {
        printf("输入选手第%d个成绩:", j);
        scanf("%d", &score);

        if (max_score < score)
            max_score = score;

        if (min_score > score)
            min_score = score;

        total_score += score;
    }

    total_score = total_score - max_score - min_score;
    printf("%d号选手的成绩:\
            去掉一个最高分%d,\
            去掉一个最低分%d,\
            最后成绩是:%d", id, max_score, min_score, total_score);
}
A

上述代码能完成题目要求

B

max_score = 0, min_score = 100 应修改为 max_score = 0, min_score = 0

C

max_score < score 和 min_score > score 必须相应修改为 <= 和 >=

D

total_score = total_score - max_score - min_score 不能达到预期,可修改如下:

int total = total_score - max_score - min_score;
total_score = total;
单选题部分已到底了。

小程序开心码未来

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

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