试卷总分:100分


选择题 15题 30分

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 10题 20分

16 17 18 19 20 21 22 23 24 25


编程题 2题 50分

26 27

E1093 CCF-GESP编程能力等级认证-C++ -2026-06 CCF-GESP C++三级真题-考试

选择题 共15道

01

关于计算机的数据编码,下面说法正确的是( )。

2分
登录后查看选项
02

计算机厂商为了计算方便,一般采用 1000 进制。如果我们买的厂商标注的是 1 TB 的硬盘,它实际的存储容量是( )。

2分
登录后查看选项
03

低 4 位、高 4 位压缩技术,适用于数据仅使用字节的一部分(如仅用低 4 位)的场景。字节结构:一个字节为 8 位,分为高 4 位(高位)和低 4 位(低位)。当数据是十六进制数( 0~15,即 0x0 到 0xF ),每个值仅需4 位表示,高 4 位全为 0 。将两个相邻的 4 位值合并为一个字节。四个数据 0x1 、 0x2 、 0x3 、 0x4 采用上述压缩技术压缩以后是( )。

2分
登录后查看选项
04

关于计算机编码中反码和补码,下面说法错误的是( )。

2分
登录后查看选项
05

题 一种加密方式是字符数组与密钥 KEY 、运算方式分开传输,比如字符数组 char text[4] = {'G', 'E', 'S', 'P'}; 由一种传输方式发送,密钥 KEY = 2026 通过另一种发送方式发送,运算方式 char function[4] = {'|', '-', '^', '+'}; 又是另一种发送方式发送。三种数据都到达目的地以后,分别进行例如 'G' | 6 、 'E' - 2 、 'S' ^ 0 、 'P' + 2 等计算,来得到相应的真实内容,上述 GESP 通过这种加密方式,加密以后 最终的内容是( )。

2分
登录后查看选项
06

关于位运算,下列说法错误的是( )。

2分
登录后查看选项
07

关于字符串和字符数组,下列说法正确的是( )。

2分
登录后查看选项
08

计算机中的 2 KB 等于多少 bit ( )。

2分
登录后查看选项
09

在 C++ 中,对于 位有符号整数 int 类型数据 n ,关于按位取反运算符 ~ ,下列说法正确的是( )。

2分
登录后查看选项
10

关于计算机中的二进制编码表示,下列说法错误的是( )。

2分
登录后查看选项
11

下面选项中提到的变量都是正整数,关于位运算,下面说法错误的是( )。

2分
登录后查看选项
12

a=7, b=3, c=14, d=15, e=8 ,对于运算表达式 !a << b & c ^ d | e 的结果是( )。

2分
登录后查看选项
13

关于 string 的成员函数,下面说法错误的是( )。

2分
登录后查看选项
14

以下数组定义,符合 C++ 语法的是( )。

2分
登录后查看选项
15

现在有一个数,请你分别判断它们是否可能是二进制、八进制、十进制、十六进制。例如, 6AFF 就只可能是十六进制,而 1011 则是四种进制皆有可能。输入 N (保证 1≤N≤1000),表示有 N 个数让你进行判断,接下来输入 N 个字符串(保证所有字符串长度不超过 10 ),判断可能是四个进制当中的哪个进制数。输出 N行,每行 4 个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用 1 表示可能,使用 0 表示不可能。下面程序横线处可以满足这个要求的是( )。

#include <iostream>
using namespace std;
int main() {
	int n = 0;
	cin >> n;
	for (int i = 0; i < n; i++) {
		char str[11];
		cin >> str;
		char max = '0';
		for (int i = 0; str[i] != '\0'; i++)
			if (str[i] > max)
				max = str[i];
		___________________________________________
	}
	return 0;
}
2分
登录后查看选项

判断题 共10道

16

反码运算时,产生的进位需要循环进位,即最高位产生的进位要加回到结果的最低位。

2分
登录后查看选项
17

-11 的补码的一种计算方式是从右往左扫描正数的二进制形式,遇到第一个 1 之后,左边的所有位都取反。

2分
登录后查看选项
18

一个 位的二进制数补码,最大的表示范围是从 -127 到 +127。

2分
登录后查看选项
19

判断某个数是否是质数,枚举范围可适当缩小(遍历到 sqrt(i) 而非 i),提升效率。

2分
登录后查看选项
20

如果 a 为 int 类型的变量,且表达式 ((a & 1) == 1) 的值为 true ,则说明 a 是奇数。

2分
登录后查看选项
21

十六进制数 CCF 对应的二进制数、八进制数、十进制数分别是: 110011001111 、 6317 、 3269 。

2分
登录后查看选项
22

下列程序如果能够正确执行,那么输出的结果是 GESP 。

int main() {
	string name = "GESP";
	cout << name[false] << name[true] << name[1 << 1] << name[7 >> 1] << endl;
}
2分
登录后查看选项
23

某个初学 C++ 的学生,在对照参考程序写了一个程序以后,信心满满地进行编译,他敲进编译器的全部代码如下,这个程序能够正常编译运行。

1 #include<bits/stdc++.h>
2 using namespace std;
3 int main() {
4 	cout << "Hello world!" << endl;
5 	return 0;
6 }
2分
登录后查看选项
24

代码逐行复刻手工运算步骤,中间不能增加任何判断逻辑,否则就不属于模拟算法。

2分
登录后查看选项
25

判断一个 int 型数字 s[i] 是不是在 0 和 9 之间(可以是 0 和 9 ),判断条件可以写为 if (s[i] >= '0' && s[i] <= '9') 。

2分
登录后查看选项

编程题 共2道

26

加密

题目描述

小杨同学有一串数字,想把它们变成另一串数字,这个过程叫做加密。

他有一本密码本,密码本告诉你,每个数字应该变成哪个数字。

数字一共有 10 个:0 、 1 、 2 、 3 、 4 、 5 、 6 、 7 、 8 、 9

密码本会依次告诉你:

0 要变成什么

1 要变成什么

2 要变成什么

……

9 要变成什么

请你按照密码本,把原来的每个数字都换成新的数字,然后输出。

输入

输入共有 3 行。

第一行:一个整数,表示有多少个数字需要加密;

第二行:这些需要加密的数字;

第三行:密码本,一共 10 个数字。

这10个数字的意思是:

第 1 个数字:表示 0 加密后变成什么;

第 2 个数字:表示 1 加密后变成什么;

第 3 个数字:表示 2 加密后变成什么;

……

第 10 个数字:表示 9 加密后变成什么。

输出

输出加密后的数字。

也就是:把输入第二行里的每个数字,都按照输入第三行的密码本换掉后输出。

数据范围

需要加密的数字个数不超过 20000 个,且均为 0 到 9;密码本中的数字不重复,且均为 0 到 9。

输入样例1

7

0 2 0 3 4 1 9

9 0 1 2 3 4 5 6 7 8

输出样例1

9 1 9 2 3 0 8

25分

C0733
登录后作答
27

字符转换

题目描述

小杨同学有一串字符,里面可能有:

  • 大写字母,比如 A 、 B 、 C
  • 小写字母,比如 a 、 b 、 c
  • 数字,比如 0 、 1 、 2

现在小杨同学想把这串字符变一变,规则如下:

1. 如果是大写字母,就变成对应的小写字母;

2. 如果是小写字母,就变成对应的大写字母;

3. 如果是数字,就变成 * 。

请你按照这个规则,帮小杨把整串字符转换好。

输入

输入一共有 2 行。

第一行:一个整数,表示这串字符一共有多少个字符。

第二行:一串连续的字符,中间没有空格。

输出

输出转换后的字符。

注意:输出时字符之间不要加空格。

数据范围

字符个数不会超过 1000 个。

每个字符只会是大写字母、小写字母或数字。

输入样例1

5

aBc98

输出样例1

AbC**

25分

C0734
登录后作答