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

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

2025 年 4 月19 日在北京举行了一场颇为瞩目的人形机器人半程马拉松赛。比赛期间,跑动着的机器人会利用身上安装的多个传感器所反馈的数据来调整姿态、保持平衡等,那么这类传感器类似于计算机的( )。

A

处理器

B

存储器

C

输入设备

D

输出设备

第 2 题

小明购置的计算机使用一年后觉得内存不够用了,想购置一个容量更大的内存条,这时他需要的内存条是( )。

A

RAM

B

ROM

C

CACHE

D

EPROM

第 3 题

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

int a=3;
float b = 3.5;
cout << (a *= b);
A

3

B

3.5

C

10

D

11

第 4 题

下面 C++ 代码用于获得正整数的第 3 位数,如 1234 则输出 2。如果是一位数或两位数,则输出 0。横线处应填入的代码是( )。

int N, remainder;
cout << "请输入正整数:";
cin >> N;
cout << _________________;
A

N % 1000 / 100

B

N / 1000 % 100

C

N / 1000 / 100

D

N % 100 / 100

第 5 题

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

int a, b = (6, 28);
b == a;
a = b;
cout << a << ' ' << b;
A

6 28

B

6 6

C

28 6

D

28 28

第 6 题

今天星期六,其后第 N 天星期几?如果是星期一到星期六输出形如:星期1、星期2等,星期天则输出星期天。下面的 C++ 代码用于完成上述要求,横线处应填上的代码是( )。

int N, remainder;
cin >> N;
remainder = _____________;
if(remainder == 0)
    printf("星期六后第%d天是星期天\n", N);
else
    printf("星期六后第%d天是星期%d\n", N, remainder);
A

(N+6) / 7

B

(N+6) // 7

C

N % 7

D

(N+6) % 7

第 7 题

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

int i, Sum = 0;
for (i = 1; i < 10; i++){
    Sum += i;
    if(i % 2) continue;
    if(i % 7) break;
}
cout << Sum;
A

45

B

28

C

3

D

0

第 8 题

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

int i, j;
for(i = 1; i < 12; i++)
    for(j = 1; j < i; j++)
        if(i * j % 2 == 1)
            break;
cout << i * j;
A

110

B

22

C

12

D

3

第 9 题

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

int i, cnt = 0;
for(i = -99; i < 100; i += 2)
    cnt = 1 + cnt;
cout << cnt;
A

101

B

100

C

99

D

98

第 10 题

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

int i;
for(i = 1; i < 10; i++){
    if(i % 3 != 0){
        printf("A#");
        continue;
    }
    else
        break;
    printf("0#");
}
if(i == 10) cout << "1";
A

A#A#

B

A#0#A#0

C

A#A#1

D

A#0#A#0#1

第 11 题

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

int i,j;
for(i = 0; i < 3; i++)
    for(j = 0; j < i; j++)
        printf("%d#%d-", i, j);
printf("END");
A

0#0-1#0-2#0-2#1-END

B

0#0-1#0-1#1-2#0-2#1-2#2-3#0-3#1-3#2-END

C

0#0-1#0-1#1-2#0-2#1-2#2-END

D

1#0-2#0-2#1-END

第 12 题

下面 C++ 代码执行后,将输出不能被 3 整除且除以 5 余数为 2 的数。下列选项不能实现的是( )。

int i,j;
for(i = 0; i < 100; i++)
    if(______________________)
        cout << i << endl;
A

(i % 3 != 0) && (i%5==2)

B

(i % 3) && (i%5==2)

C

(i % 3) && !(i % 5 != 2)

D

!(i%3) && (i%5==2)

第 13 题

下面 C++ 代码用于判断一个大于 0 的正整数是几位数,横线处应填入代码先后是( )。

int N, cnt;
cout << "请输入大于0的正整数:";
cin >> N;

cnt = 0;
while  (_________){
    cnt += 1;
    ______________;
}

cout << cnt;
A
N > 1
N = N / 10
B
N > 1
N /= 10
C
N == 0
N /= 10
D
N > 0
N /= 10
第 14 题

判断一个数是否为自守数。自守数的定义是如果一个数的平方其尾数与该数相同,则为自守数,如 25 的平方是 625,其尾数是 25,所以 25 是自守数。相关说法错误的是( )。

int N, N1, M1;
cout << "输入一个正整数:";
cin >> N;
N1 = N, M1 = N * N;

bool Flag = true;

while (N1 > 0){
    if (N1 % 10 != M1 % 10){
        Flag = false;
        break;
    }
    else{
        N1 = N1 / 10, M1 = M1 / 10;
    }
}

if (Flag == true)
    printf("%d的平方是%d,是自守数", N, N * N);
else
    printf("%d的平方是%d,不是自守数", N, N * N);
A

如果 Flag 在循环中不被改为 false,则说明该数是自守数

B

代码 if (N1% 10 != M1 % 10) 用于判断其个位数是否相等,如果不等,则表明不是自守数

C

代码 N1=N1/10, M1=M1 / 10 将个位数去掉

D

将 N1 > 0 改为 N>0 效果相同

第 15 题

下面 C++ 代码实现输出如下图形,相关说法错误的是( )。

请输入层数: 10
0
12
345
6789
01234
567890
1234567
89012345
678901234
5678901234
int line_number, now_number;
int i,row;

cout << "请输入行数: ";
cin >> line_number;
now_number = 0;

for (row = 1; row < line_number + 1; row++){ // L1
    for (i = 0; i < row; i++){ // L2
        cout << now_number;
        now_number += 1;
        if (now_number == 10) now_number = 0; // L3
    }
    cout << endl;
}
A

代码 now_number = 0 移动到 L1 和 L2 标记的两行代码之间,效果维持不变

B

代码 now_number += 1 修改为 now_number = 1 + now_number 效果维持不变

C

将代码 now_number == 10 调整为 now_number > 9 效果维持不变

D

将最后一行的 cout << endl 修改为 cout<<"\n",效果维持不变

单选题部分已到底了。