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

单选题
共 15 道 每题 2 分 共计 30 分
第 1 题

2026年春节联欢晚会上一个武术表演节目《武BOT》。节目中多个人形机器人会表演空翻,它们落地可能会有微微踉跄,但都会迅速调整姿态站稳,并适当移动来和前后左右的其他机器人保持原来队列。如果将机器人视作一个计算机系统,那么在该计算机系统中下面哪一项不能作为输入设备( )。

A

检测重心的重力传感器

B

预装的 AI 算法程序

C

接收动作指令的遥控器

D

拍摄其他机器人的摄像头

第 2 题

下面代码用来找出输入的 N 个正整数中最大的一个。如果将代码段用流程图来表示,则 L1 标记的代码行应该使用的图形是( )。

int N, max=0, val;
cin >> N;

while(N){
    cin >> val;
    if(val > max) // L1
        max = val;
    N--;
}

cout << max;
A

圆形框

B

椭圆形框

C

平行四边形框

D

菱形框

第 3 题

下面 C++ 代码可以执行,有关说法正确的是( )。

double PI = 3.1415926;
cout << (PI);
A

为了方便初学者,cout << (PI)cout << (pi) 效果相同,即变量的大小写不敏感

B

cout << (PI) 修改为 cout << (Pi) 能正常执行

C

不能用 PI 做变量名,因为要保存圆周率这个常量

D

将程序中全部 PI 都改写为 Pai,将能正常执行,不会报错

第 4 题

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

A

x <= 5 && y > 10

B

x > 5 || y <= 10

C

x <= 5 || y > 10

D

! x > 5 && ! y <= 10

第 5 题

某同学执行 C++ 代码 cout << ((0.1 + 0.2) == 0.3) 时输出 0 ,下面最可能的原因是( )。

A

C++ 的 + 运算符在处理小数时存在 bug

B

0.10.20.3 在计算机中无法用二进制浮点数精确表示,导致 0.1 + 0.2 的结果与 0.3 存在微小误差

C

== 运算符不能用于比较浮点数,只能用于整数

D

因为 0.1 + 0.2 的数学结果不等于 0.3

第 6 题

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

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

0#1#3#6#10#10

B

1#2#3#4#5#6#7#8#9#10#10

C

10#10

D

10

第 7 题

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

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

0#

B

-2#-1#1#

C

-1#0#

D

-2#0#1#

第 8 题

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

int cnt = 0, i, j;
for (i =1; i < 5; i++){
    for (j =0; j < i; j++)
        cout << j << "#";
    break;
}
if(i >= 5)
    cout << (i*j);
A

0#0#1#0#1#2#0#1#2#3#12

B

0#0#1#0#1#2#0#1#2#3#

C

0#

D

1#

第 9 题

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

int count = 0;
for (int i = 1; i < 4; i++)
    for (int j = 1; j < 5; j++){
        if (j == 3)
            continue;
        if (i == 2)
            break;
        count += 1;
    }
cout << (count);
A

2

B

4

C

6

D

8

第 10 题

下面 4 个选项中,与下面 C++ 代码段具有相同效果的是( )。

i = 0;
while (i < 5){
    cout << i;
    i += 1;
}
A
for (i = 0; i < 5; i++)
    cout << i;
B
for (i = 1; i < 5; i++)
    cout << i;
C
for (i = 0; i < 6; i++)
    cout << i;
D
for (i = 1; i < 6; i++)
    cout << i;
第 11 题

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

int n = 10;
while (n > 0){
    n -= 1;
    if (n % 3 == 0)
        continue;
    if (n == 5)
        break;
}
cout << n;
A

0

B

5

C

6

D

7

第 12 题

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

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

5

B

15

C

20

D

30

第 13 题

某学校图书馆的借阅卡号由 6 位整数组成。前 5 位是顺序编号,第 6 位是校验码, 用于防止输错。校验码规则如下:将前 5 位数字相加,然后除以 10 的余数,就是第 6 位数字。如卡号 123455 的前 5 位之和为 15,除以 10 的余数是 5,故第 6 位为 5。下面的 C++ 代码段用于判断卡号是否正确,横线处应填入的代码是( )。

cout << "请输入卡号:";
cin >> N;
order_num = N / 10; // 获得前5位顺序号,假设录入一定为6位正整数
check_num = N % 10; // 获得最后一位

tnt = 0; // 保存前5位之和
for (i = 0; i < 5; i++){
    ________________;
    order_num /= 10;
}

if (__________________)
    cout << "符合校验规则";
else
    cout << "不符合校验规则";
A
tnt += order_num / 10
tnt / 10 == check_num
B
tnt += order_num % 10
tnt % 10 == check_num
C
tnt = order_num / 10 + tnt
tnt % 10 == check_num
D
tnt = order_num % 10
tnt / 10 == check_num
第 14 题

下面的 C++ 代码段正常执行后其输出的数字图形是( )。

for (i = 1; i < 5; i++){
    for (j = 1; j < i+1; j++)
        cout << j;
    cout << endl;
}
A
1
12
123
1234
B
1
22
333
4444
C
1
21
321
4321
D
4
34
234
1234
第 15 题

某学校举办“校园演讲比赛”,每位选手由 8 位评委打分(分数为 0~10 的整数),且每位评委必须打分。计分规则:若至少有 5 位评委给出大于等于 6 分,则成绩有效,最终得分为所有 8 位评委的总分;如给出低于 6 分的评委数量超过 5 位,则记为 0 分。以下核心程序段依次输入 8 个分数,并计算最终得分。横线处应填入 ( )。

total_score = 0; // 所有分数之和
high_count = 0;  // ≥6分的评委数量

for (i = 0; i < 8; i++){
    cout << "请输入评委分数: ";
    cin >> score;
    ____________________;
    if (score >= 6)
        ________________;
}

if (high_count >= 5)
    cout << total_score;
else
    cout << 0;
A
total_score += score
high_count += 1
B
total_score += score
high_count += score
C
high_count += 1
total_score += score
D
total_score *= score
high_count *= 1
单选题部分已到底了。