试卷总分: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

E860 CCF-GESP编程能力等级认证-C++ -202512 CCF-GESP C++三级真题-考试

选择题 共15道

01 请将二进制数(1101.101)2,转换为等值的10进制数? 2分
登录后查看选项
02 以下关于标准 C++ 一维数组的描述,哪一项是错误的? 2分
登录后查看选项
03

下列代码段执行后,变量 sum 的值是?

{
	int sum = 0;
	for (int i = 1; i <= 10; i++) {
		if (i % 3 == 8>>2)
			continue;
		sum += i;
	}
}
2分
登录后查看选项
04

执行以下程序段,输出值是?

int x = 5;
if (x == 3 >> 2) x = 8 >> 3;
cout << x << endl;
2分
登录后查看选项
05

已知字符串 s = "C++ Programming" ,下列程序运行的结果是?

cout << (int)(s.length() | 3) << endl;
2分
登录后查看选项
06

以下代码是一个程序的部分代码,能够正确执行,输出的结果是?

int arr[5] = {1, 2, 3, 4, 5};
int p = arr[1];
cout << (p + 2) << endl;
2分
登录后查看选项
07 以下关于 C++ 求最小值函数 min() 的描述,不正确的是? 2分
登录后查看选项
08 在一个特定的计算机系统中,假如 unsigned int 类型需要占用2个字节的存储空间(每个字节有8位),则 unsigned int 可以表示的数据范围是? 2分
登录后查看选项
09

以下代码执行后,数组 arr 的内容是

int arr[6] = {1, 2, 3, 4, 5, 6};
for (int i = 0; i < 6; i += 2) {
	arr[i] = arr[i] + arr[i+1];
	arr[i+1] = arr[i] - arr[i+1];
	arr[i] = arr[i] - arr[i+1];
}
2分
登录后查看选项
10 a & b | (c ^ d) ,其中 a = 3, b = 7, c = 15, d = 4 ,计算结果是? 2分
登录后查看选项
11

整型变量 x 的初始值为 10 ,以下代码的输出结果是?

int t = x--;
t -= x;
cout << t << endl;
2分
登录后查看选项
12

根据下面的流程图,如果成绩 score 输入 60 ,输出的结果是?

2分
登录后查看选项
13

以下代码运行后, sum 的结果是?

int arr[5] = {2, 4, 6, 8, 10};
int sum = 0;
for (int i = 0; i < 5; i++) {
	switch (arr[i] % (1|2)) {
		case 0: sum += 1; break;
		case 1: sum += 2; break;
		case 2: sum += 3; break;
	}
}
2分
登录后查看选项
14 以下关于 C++ 中 abs() 函数的描述,正确的是? 2分
登录后查看选项
15

如果字符串 s 的值是 GESP ,以下代码 s 的最后结果是?

for (int i = 0; i < s.length(); i++) {
	s[i] = toupper(s[i] + i);
}
2分
登录后查看选项

判断题 共10道

16 在 C++ 中,数组名不能改变,数组名不能被赋值。 2分
登录后查看选项
17 整型变量 a 的值为 3 ,浮点数变量 b 的值为 3.5 ,在 C++ 编译环境下,经过 a *= b 计算后, a 的值变为 10.5 ,此时如果输出 a ,将输出 10.5 。 2分
登录后查看选项
18 strcmp(str1, str2) 返回 0 表示 str1 大于 str2 ,返回正数表示两者相等。 2分
登录后查看选项
19

以下代码输出结果为 8 。

int a = 5, b = 3;
int c = a++ + ++b;
cout << c << endl;
2分
登录后查看选项
20 位运算符 & 、 | 、 ^ 、 ~ 的优先级高于算术运算符 + 、 - 、 * 、 / 。 2分
登录后查看选项
21 在 C++ 中, int a[] = {1, 2, 3, 4, 5}; 可以定义一个包含 5 个元素的整型数组。 2分
登录后查看选项
22

C++ 表达式 z = a > b ? x : y 等同于:

if (a > b) {
	z = x;
} else {
	z = y;
}

以下代码执行后,输出将会是 2 。

int main() {
	int arr[5] = {1, 2, 3, 4, 5};
	cout << arr[3 > 2 ? 1 : 2] << endl;
	return 0;
}
2分
登录后查看选项
23 在 C++ 中, ++ 和 -- 运算符只能用于整型变量,不能用于浮点数变量。 2分
登录后查看选项
24 给定一个正整数 a ,当需要计算 -a 的补码时,有这样一个计算技巧:将 a 的二进制形式从右往左扫描,遇到第一个 1 之后,将找到的第一个 1 左边的所有位都取反,能得到 -a 的补码。 2分
登录后查看选项
25

以下代码中, Hello 将被输出5次。

for (int i = 0; i < 5; i++);
{
	cout << "Hello" << endl;
}
2分
登录后查看选项

编程题 共2道

26

密码强度


小杨是学校网络安全小组的成员,今天他的任务是设计一个“密码强度检测器”,帮助同学们检查自己的密码是否足够安全。一个安全的密码需要满足以下条件:

  • 密码至少包含8个字符(太短的密码容易被猜出来哦!)。
  • 密码至少包含一个大写字母(A、B、C、...、Z 都可以)。
  • 密码至少包含一个数字(0、1、2、3、...、9 都可以)。

例如:

  • 密码 PAs1s2an 是安全密码(有8位、包含大写字母 P 、 A 和数字 1 、 2 )。
  • 密码 ab1da3cd 不是安全密码(没有大写字母)。
  • 密码 Paabdbcd 不是安全密码(没有数字)。
  • 密码 Pa2 不是安全密码(只有3位,太短了)。
输入

第一行一个正整数 ,代表1需要安全检测的密码组数。

对于每组密码,一行包含一个字符串,代表需要安全检测的密码。

输出

对于每组密码,输出一行,如果满足强度要求输出 Y,否则输出 N。

数据范围

对于所有测试点,保证1≤T≤100,并且每组密码长度不超过 100 且至少为 1,每组密码仅由大小写字母和数字组成。

输入样例1

6

PAs1s2an

1a2bCql3

Pa12bsna

ab1da3cd

Paabdbcd

Pa2

输出样例1

Y

Y

Y

N

N

N

25分

C0351
登录后作答
27

小杨的智慧购物


小杨的班级要举办一个环保手工作品展览,老师请小杨去文具店购买 M 种不同的文具(例如:铅笔、橡皮、尺子等)。

商店里共有 N 件文具,每件文具都有一个种类编号(从1 到 M)和价格。

小杨的预算有限,他想了一个聪明的办法:对于每种文具,他只买最便宜的那一件(如果同种文具有多件价格相同且都是最便宜的,他只会购买其中的一件)。请你帮小杨计算出,买齐这 M 种文具一共需要花费多少钱。

输入

第一行两个正整数 M、N,代表文具的种类数和总数。

之后 N 行,每行两个正整数 Ki 和 Pi,分别代表第 i 件文具的种类编号和它的价格。数据保证每个种类至少有一件文具可供购买。

输出

输出一行,代表购买文具的总价。

数据范围

对于所有测试点,保证 1≤M≤N≤10^5,1≤Ki≤M,1≤Pi≤10^3。

输入样例1

2 5

1 1

1 2

1 1

2 3

2 10

输出样例1
4
25分

C0352
登录后作答