CCF GESP 2025年3月认证 C++ 3级

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

Base64 编码将每 3 字节的输入数据编码为 4 字节的输出数据。如果输入数据长度不是 3 的倍数,会用 = 号填充。在 Base64 编码中,如果输入字符串的长度为 10 字节,编码后的字符串长度是多少( )

A

12 字节

B

13 字节

C

14 字节

D

16 字节

第 2 题

UTF-8 编码规则如下:

1 字节:0xxxxxxx

2 字节:110xxxxx 10xxxxxx

3 字节:1110xxxx 10xxxxxx 10xxxxxx

4 字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

以下哪个字节序列是合法的 UTF-8 编码( )

A

0xC0 0x80

B

0xF0 0x90 0x80 0x80

C

0x80 0x80 0x80

D

0xFF 0xFE 0xFD

第 3 题

在 8 位二进制原码表示中,八进制数 -5 的二进制形式是什么( )

A

10000101

B

11111010

C

11111011

D

00000101

第 4 题

十进制数 111.111 的二进制表示可以是下面的( )。

A

1101111.0001110001

B

1101110.1001110001

C

1101111.1001110001

D

1101111.0011110001

第 5 题

在 C++ 中,补码的主要作用是( )

A

提高浮点数的精度

B

简化整数的加减法运算

C

增加整数的表示范围

D

优化内存分配

第 6 题

在 C++ 中,一个 8 位有符号整数(使用补码表示)的范围是( )

A

-128 到 127

B

-127 到 128

C

-256 到 255

D

0 到 255

第 7 题

在 C++ 中,以下代码的输出是什么( )

int a = -5;
unsigned int b = a;
cout << b;
A

-5

B

5

C

4294967291

D

编译错误

第 8 题

下列程序的作用是( )

int main() {
    int decimal = 25;
    cout << oct << decimal;
    return 0;
}
A

将十进制数转换成八进制数

B

将八进制数转换成十进制数

C

将二进制数转换成八进制数

D

将八进制数转换成 16 进制数

第 9 题

下面程序是将十进制转十六进制,横线处应该填入的是 ( )

#include <iostream>
using namespace std;
 
int main() {
    int decimal = 255;
    _______________________
    return 0;
}
A

cout << oct << decimal;

B

cout << decimal << decimal;

C

cout << hex << decimal;

D

不能正确执行

第 10 题

以下代码的说法正确的是什么( )

#include <iostream>
using namespace std;
 
int main() {
    int a = 0b1101;
    int b = 0b1011;
    cout << (a ^ b);
    return 0;
}
A

进行的是整体异或运算

B

进行的是按位同或运算

C

进行的是按位与运算

D

进行的是按位异或运算

第 11 题

下面枚举法查找最大值索引程序中,横线处应该填写的是( )

#include <iostream>
using namespace std;
 
int main() {
    int arr[] = {3, 7, 2, 9, 5};
    int maxIndex = 0;
    for (int i = 1; i < 5; i++) {
        _______________________
        {
            maxIndex = i;
        }
    }
    cout << maxIndex;
    return 0;
}
A

if (arr[maxIndex] > arr[i])

B

if (arr[i]-1 > arr[maxIndex])

C

if (arr[i]+1 > arr[maxIndex])

D

if (arr[i] > arr[maxIndex])

第 12 题

以下代码的功能是将数组中的奇数和偶数分别放在数组的前半部分和后半部分,横线处应该填入的是( )

#include <iostream>
using namespace std;
 
int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int left = 0, right = 4;
    while (left < right) {
        while (arr[left] % 2 == 1 && left < right) left++;
        _______________________
        if (left < right) {
            swap(arr[left], arr[right]);
        }
    }
    for (int i = 0; i < 5; i++) {
        cout << arr[i] << " ";
    }
    return 0;
}
A

while (arr[left] % 2 == 0 && left < right) right--;

B

while (arr[right] % 2 == 0 && left < right) left--;

C

while (arr[right] % 2 != 0 && left < right) right--;

D

while (arr[right] % 2 == 0 && left < right) right--;

第 13 题

下面程序最后能够得到 HelloC++ 的是( )

int main() {
    string str = "HelloWorld";
    _______________________
    cout << str;
    return 0;
}
A

str.replace(0, 5, "C++");

B

str.replace(5, 5, "C++");

C

str.replace(1, 5, "C++");

D

str.replace(4, 5, "C++");

第 14 题

想要得到字符串 world,下面程序横线处应该填入的是()

#include <iostream>
#include <string>
using namespace std;
 
int main() {
    string str = "HelloC++";
    _____________
    _____________
    return 0;
}
A
str.insert(4, "World");
cout << str.substr(4, 4);
B
cout << str.substr(5, 5);
C
str.insert("World");
cout << str.substr(5, 5);
D
str.insert(5, "World");
cout << str.substr(5, 5);
第 15 题

有 n 个正整数,假设一个正整数是美丽数字当且仅当该正整数是 9 的倍数但不是 8 的倍数。下面的程序是编写计算 n 个正整数中美丽数字的数量,横线处应该填入的是( )

for (int i = 1; i <= n; i++) {
    cin >> a;
    _______________________
    cnt++;
}
A

if (a % 9 != 0 && a % 8 != 0)

B

if (a % 9 == 0 && a % 8 == 0)

C

if (a % 9 == 0 && a % 8 != 0)

D

if (a % 9 == 0 & a % 8 != 0)

单选题部分已到底了。