信奥刷题站
GESP 认证 3级2025-03

2025年3月 GESP C++ 3级

题量
27 题
客观题
25 题
建议时长
60 分钟
卷面总分
100 分

2025年3月 GESP C++ 3级认证考试真题(含编程操作题部分)

开始整卷模拟计时作答 · 交卷即时判分 · 错题自动进错题本(需登录)2 道编程大题:在线只判客观题,编程题请自行前往洛谷等 OJ 提交验证

// questions

题目预览

1
单选题2

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

A

121212 字节

B

131313 字节

C

141414 字节

D

161616 字节

2
单选题2

UTF-8 编码规则如下:

字节:0xxxxxxx
字节:110xxxxx 10xxxxxx
字节:1110xxxx 10xxxxxx 10xxxxxx
字节:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx

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

A

0xC0 0x80

B

0xF0 0x90 0x80 0x80

C

0x80 0x80 0x80

D

0xFF 0xFE 0xFD

3
单选题2

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

A

10000101

B

11111010

C

11111011

D

00000101

4
单选题2

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

A

1101111.00011100011101111.00011100011101111.0001110001

B

1101110.10011100011101110.10011100011101110.1001110001

C

1101111.10011100011101111.10011100011101111.1001110001

D

1101111.00111100011101111.00111100011101111.0011110001

5
单选题2

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

A

提高浮点数的精度

B

简化整数的加减法运算

C

增加整数的表示范围

D

优化内存分配

6
单选题2

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

A

−128-128128127127127

B

−127-127127128128128

C

−256-256256255255255

D

000255255255

7
单选题2

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

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

−5-55

B

555

C

429496729142949672914294967291

D

编译错误

8
单选题2

下列程序的作用是()

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

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

B

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

C

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

D

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

9
单选题2

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

#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
单选题2

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

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

进行的是整体异或运算

B

进行的是按位同或运算

C

进行的是按位与运算

D

进行的是按位异或运算

11
单选题2

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

#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
单选题2

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

#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
单选题2

下面程序最后能够得到 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
单选题2

想要得到字符串 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
单选题2

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

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)

16
判断题2

判断一个三角形是否成立的条件只有:任意两边长度之和大于第三条边的长度

17
判断题2

这段程序进行的是判断一个从键盘输入的字符的 ASCII 是否是奇数,若是,输出 YES,否则,输出 NO

int main()
{
    char x;
    scanf("%c", &x);
    int ASCII = (int)x;
    cout << (x & 1 ? "YES" : "NO") << '\n';
    return 0;
}
18
判断题2

闰年的定义: 普通闰年:公历年份是 444 的倍数,且不是 100100100 的倍数的,为闰年(如 200420042004 年、202020202020 年等就是闰年)。 世纪闰年:公历年份是整百数的,必须是 400400400 的倍数才是闰年(如 190019001900 年不是闰年,200020002000 年是闰年)。 下面程序是判断是否是闰年的正确程序

cin>>n;
cout<<((n%4==0&&n%100!=0)||(n%400==0))?1:0;
return 0;
19
判断题2

C++ 语句 cout << (n % 15 == 0 ? "YES" : "NO"); 能够判断一个整数能否被 333555 同时整除

20
判断题2

nnn 个同学,从中抽取任意个人数来参加学校组织的大合唱,共有 2n2^n2n 个方法

21
判断题2

若将一个正整数化为二进制数,在此二进制数中,我们将数字 111 的个数是偶数的这类二进制数称为 A 类数,否则就称其为 B 类数。 例如: (13)10=(1101)2(13)_{10} = (1101)_2(13)10=(1101)2,其中 111 的个数为 333 则称此数为 B 类数; (10)10=(1010)2(10)_{10} = (1010)_2(10)10=(1010)2,其中 111 的个数为 222,称此数为 A 类数; 判断 (2025)10(2025)_{10}(2025)10 化为二进制后,111 的个数为偶数个,因此 202520252025 为 A 类数。

22
判断题2

该段程序将 nnn 不停地除以 222,并输出此时的商和余数,直到 n=0n=0n=0 为止。

long long n;
cin >> n;
while(n != 0) {
    cout << n/2 << ' ' << n%2 << '\n';
    n /= 2;
}
23
判断题2

两个 131313 进制的数 AAABBB,在 101010 进制下分别表示 101010111111(A+B)13=(18)13(A+B)_{13} = (18)_{13}(A+B)13=(18)13,也就是说 131313 进制数 AAA 加上 131313 进制数 BBB,和是 131313 进制数 181818

24
判断题2

kkk 进制,逢 kkk 进第二位, 进百位, 进千位;

25
判断题2

CCF(十九进制) = 21AC(十三进制) (不区分大小写)

GESP 编程操作题
26
编程题25

试题名称:2025

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

题目描述

小 A 有一个整数 xxx,他想找到最小的正整数 yyy 使得下式成立:

(x and⁡ y)+(x or⁡ y)=2025(x \ \operatorname{and} \ y) + (x \ \operatorname{or} \ y) = 2025(x and y)+(x or y)=2025

其中 and⁡\operatorname{and}and 表示二进制按位与运算,or⁡\operatorname{or}or 表示二进制按位或运算。如果不存在满足条件的 yyy,则输出 −1-11

输入格式

一行,一个整数 xxx

输出格式

一行,一个整数,若满足条件的 yyy 存在则输出 yyy,否则输出 −1-11

样例输入 #1

1025

样例输出 #1

1000

说明/提示

对于所有测试点,保证 0≤x<20250 \leq x < 20250x<2025

(x and⁡ y)+(x or⁡ y)=2025(x \ \operatorname{and} \ y) + (x \ \operatorname{or} \ y) = 2025(x and y)+(x or y)=2025

其中:

  • and⁡\operatorname{and}and 表示按位与运算,运算符为 &\&&
  • or⁡\operatorname{or}or 表示按位或运算,运算符为 ∣|
本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)
27
编程题25

试题名称:词频统计

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

题目描述

在文本处理中,统计单词出现的频率是一个常见的任务。现在,给定 nnn 个单词,你需要找出其中出现次数最多的单词。在本题中,忽略单词中字母的大小写(即 AppleappleAPPLEaPPle 等均视为同一个单词)。

请你编写一个程序,输入 nnn 个单词,输出其中出现次数最多的单词。

输入格式

第一行,一个整数 nnn,表示单词的个数;

接下来 nnn 行,每行包含一个单词,单词由大小写英文字母组成。

输入保证,出现次数最多的单词只会有一个。

输出格式

输出一行,包含出现次数最多的单词(输出单词为小写形式)。

样例输入 #1

6
Apple
banana
apple
Orange
banana
apple

样例输出 #1

apple

说明/提示

对于所有测试点,1≤n≤1001\leq n\leq 1001n100,每个单词的长度不超过 303030,且仅由大小写字母组成。

本题为编程大题:请复制题面到洛谷 / GESP OJ 等平台编写并提交代码(本站不判分)