编程未来 Coding Future

2026年9月 GESP C++ 2级

GESP · 2级 · 2026-09

60:00
满分 100.0
时长 60 分钟
27

2026年9月 GESP C++ 2级认证考试真题(客观题部分)

单选题(共 15 题,每题 2 分)

1

第二届世界⼈形机器⼈运动会开幕式上,机器⼈方阵通过控制程序来完成整场表演。表演前,⼯程师们使用
集成开发环境(IDE)编写并调试方阵的控制程序。下列关于 IDE 功能的描述,错误的是( )。

2

计算机 CPU 中的高速缓冲存储器(Cache)主要为提升系统性能⽽设计。下列关于 Cache 的说法中正确的是
( )。

3

执行如下 C++ 代码,其输出是( )。
1 cout << (3 == 3.0);

4

执行如下 C++ 代码,其输出是( )。
1 cout << (bool(5) + bool(-5) + bool(5.0));

5

判断年份 N 是否为闰年的规则是:能被 4 整除但不能被 100 整除,或者能被 400 整除。以下 C++ 表达
式中,能正确判断 N 是否为闰年的是( )。

6

执行如下 C++ 代码,其输出是( )。

int tot, i;
tot = 0;
for (i = 0; i < 10; i++)
if (i)
tot += 1;
cout << tot;
7

执行如下 C++ 代码,当输入 4 时,其输出是( )。

int n, tot, i, j;
cin >> n;
tot = 0;
for (i = 1; i < n; i++)
for (j = 1; j < i; j++)
tot += 1;
cout << tot;
8

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

int tnt, i;
tnt = 0;
for (i = 0; i < 10; i++)
if (i % 3)
tnt += i;
cout << tnt;
9

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

int tot = 0, i;
for (i = -5; i < 5; i++)
if (not(i % 3 != 0))
tot += 1;
cout << tot;
10

有关如下 C++ 代码描述,变量都是整型,错误的是( )。

int n, limit, i;
cout << "请输入一个正整数: ";
cin >> n;
if (n <= 1)
printf("%d非素数", n);
else if (n == 2)
printf("2是素数");
else {
    limit = sqrt(n) + 1;
    for (i = 2; i < limit; i++)
    if (n % i == 0) {
        printf("%d非素数", n);
        break;
    }
    if (i >= limit)
    printf("%d是素数", n);
}
11

执行以下 C++ 代码后,最终的输出结果是( )。

int total, i, j;
total = 0;
i = 1;
while (i <= 3) {
    for (j = 1; j < i + 1; j++)
    total += i * j;
    i += 1;
}

cout << total;
12

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

int count, i, j;
count = 0;
for (i = 1; i < 4; i++)
for (j = 0; j < i; j++) {
    if (j % 3 == 0)
    continue;
    count += 1;
    if (i * j >= 2)
    break;
}

printf("%d %d %d", i, j, count);
13

如下的 C++ 代码执行时输入 12 将输出如下数字图形。注意:最后一行之前没有空格。横线处应填入的代
码是( )。

0
12
345
6789
01234
567890
1234567
89012345
678901234
5678901234
56789012345
678901234567
int line, i, j, k;

i = 0;
cout << "请输入行数:";
cin >> line;
for (j = 0; j < line; j++) {
    for (k = 0; k < ___________; k++) // L1
    cout << " ";
    for (k = 0; k < j + 1; k++) {
        cout << i;
        i += 1;
        if (i >= 10)
        i = 0;
    }
    cout << endl;
}
14

小北的身高是 1.65 米。班上有 n 个小朋友,小北想和身高最接近自⼰的⼈交朋友。如果有多个小朋友
与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是( )。

int n, i;
float target, h, best_height, min_diff, diff;

cout << "请输入小朋友的人数: ";
cin >> n;
target = 1.65;
best_height = 0.0;
min_diff = 100.0;

for (i = 0; i < n; i++) {
    cout << "请输入第 " << i << " 个小朋友的身高: ";
    cin >> h;
    diff = abs(h - target);

    if (____________________) { // L1
        min_diff = diff;
        best_height = h;
    }
}

cout << "小北的朋友身高为: " << best_height;
15

小北的身高是 1.65 米。班上有 n 个小朋友,小北想和身高最接近自⼰的⼈交朋友。如果有多个小朋友
与小北的身高差相同,小北想和其中身高较矮的第一个小朋友做朋友。横线处应该填入的是( )。

int n, i;
float target, h, best_height, min_diff, diff;

cout << "请输入小朋友的人数: ";
cin >> n;
target = 1.65;
best_height = 0.0;
min_diff = 100.0;

for (i = 0; i < n; i++) {
    cout << "请输入第 " << (i + 1) << " 个小朋友的身高: ";
    cin >> h;

    if (h > target)
    diff = h - target;
    else
    diff = target - h;

    if (diff < min_diff) {
        min_diff = diff;
        best_height = h;
    } else if (diff == min_diff) {
        __________________
        __________________
    }
}

cout << "小北的朋友身高为:" << best_height;

判断题(共 10 题,每题 2 分)

16

C++ 程序执行 cin 或 scanf 语句时通常是使用键盘等输入设备来输入某个变量的值。

17

执行 C++ 语句 cout << ( 5 && 2 ); 将输出 1。

18

C++ 表达式 2 * - '2' / 4 的值是 -1。

19

如下 C++ 代码执行后的输出是 10。

int a;
a = 5;
a == +5;
cout << a;
20

执行 C++ 代码 cout << (not not 5) 将输出 5。

21

下面 C++ 代码执行后将输出 369。

for (int i = 1; i < 10; i++)
if (not(i % 3))
cout << i;
22

N 是整数,执行如下 C++ 代码,将能输出 0 到 N 之间(包含 N)所有数之和。

int N, tot, i;
cin >> N;
tot = 0;
for (i = 0; i < N + 1; i++)
tot += i;
cout << tot;
23

如下 C++ 代码执行后,输出值为 0。

int cnt, i, j;
cnt = 0;
for (i = 0; i < 10; i++) {
    continue;
    for (j = 0; j < i; j++)
    cnt += 1;
}

cout << i * cnt;
24

求解鸡兔同笼。在如下 C++ 代码中,tou 代表鸡和兔的头总数,jiao 代表鸡和兔的脚总数。先后两个输
入均为正整数。该程序能求解鸡兔同笼。

int tou, jiao, tu_tou, ji_tou;

cout << "请输入鸡和兔的头总数:";
cin >> tou;
cout << "请输入鸡和兔的脚总数:";
cin >> jiao;

for (tu_tou = 0; tu_tou < tou + 1; tu_tou++) {
    ji_tou = tou - tu_tou;
    if (tu_tou * 4 + ji_tou * 2 == jiao)
    printf("兔的数量=%d,鸡的数量=%d\n", tu_tou, ji_tou);
}

if (tu_tou == tou)
printf("无解\n");
25

如果 N 和 M 均为整数,下列 C++ 代码则可以判断正整数 N 是 M 的平方。比如 9 是 3 的平方。

int N, M;

cout << "请输入正整数N:";
cin >> N;
cout << "请输入整数M:";
cin >> M;

if (int(sqrt(N)) == abs(M))
printf("%d是%d的平方\n", N, M);

编程操作题(共 2 题,共 50 分)

26
编程操作题 25分

试题名称:直角三角形

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

小双刚学会勾股定理,得知直角三角形的斜边的平方等于两直角边的平方和。

小双创造了直角三角形数列:数列前两项由小双指定,从第三项开始,数列中的每个数字的平方等于前两项的平方和。

例如,第一项是 $3.0$,第二项是 $4.0$,则第三项是 $\sqrt{3.0^2+4.0^2}=5.0$。

其中 $\sqrt{x}$ 表示 $x$ 的算术平方根,可以使用 C/C++/Python 标准库中对应函数计算。

小双给定了数列的前两项,并给定一个数列上限,想让你算算数列的第几项会超过小双给定的数列上限?

输入格式

输入三行,第一行一个浮点数是数列第一项,第二行一个浮点数是数列第二项,第三行一个浮点数表示数列上限。

输出格式

输出一个正整数,表示第几项开始会超过小双给定的数列上限。

样例输入 #1

3.0
4.0
10.0

样例输出 #1

6

说明/提示

样例解释 1

数列依次为:

  • $3.0$,
  • $4.0$,
  • $\sqrt{3.0^2+4.0^2}=5.0$,
  • $\sqrt{4.0^2+5.0^2}=6.403124\ldots$,
  • $\sqrt{5.0^2+6.403124^2}=8.124038\ldots$,
  • $\sqrt{6.403124^2+8.124038^2}=10.344080\ldots$,

因此第 $6$ 项会超过上限。

数据范围

输入均为不超过 $10000$ 的正数。

题目保证给定第一项小于第二项。

无需过度考虑浮点精度问题。

27
编程操作题 25分

试题名称:字符变换

时间限制:1.0 s | 内存限制:512.0 MB

题目描述

小明有一个 $8\times16$ 的画布(8 行 16 列),画布中的格子从上到下从左到右编号,左上的编号为 $1$,第一排最后一个的编号为 $16$,最后一排第一个编号为 $113$,右下为 $128$。

初始画布中的每个格子都是 *,随后小明会给定三个正整数,小明会将对应编号的格子变为该正整数对应的 ASCII 编码字符。

最后请帮小明输出整个画布。

输入格式

输入包含三行,每行一个正整数,表示需要替换的画布格子编号。

输出格式

输出 $8\times16$ 的画布。

样例输入 #1

48
65
97

样例输出 #1

****************
****************
***************0
****************
A***************
****************
a***************
****************

说明/提示

输入范围是 $48$ 到 $57$,$65$ 到 $90$,以及 $97$ 到 $122$(即 ASCII 编码的 09AZ,以及 az)。

已答 0/27