CCF编程能力等级认证GESP—C++3级—20251227

单选题(每题 2 分,共 30 分)

1、请将二进制数(1101.101)2,转换为等值的10进制数( )

A. 14.25
B. 13.625
C. 13.5
D. 14.5

正确答案:B

2、以下关于标准 C++ 一维数组的描述,哪一项是错误的?( )

A. 数组的下标从0开始
B. 数组在内存中是连续存放的
C. 数组的长度只能在运行时才能确定
D. 可以在程序中修改数组某个元素的值

正确答案:C

3、下列代码段执行后,变量 sum 的值是( )

{
	int sum = 0;
	for (int i = 1; i <= 10; i++) {
		if (i % 3 == 8>>2)
			continue;
		sum += i;
	}
}
A. 12
B. 17
C. 33
D. 40

正确答案:D

4、执行以下程序段,输出值是( )

int x = 5;
if (x == 3 >> 2) x = 8 >> 3;
cout << x << endl;
A. 0
B. 5
C. 120
D. 1

正确答案:B

5、已知字符串 s = “C++ Programming” ,下列程序运行的结果是( )

cout << (int)(s.length() | 3) << endl;
A. 14
B. 15
C. 16
D. 17

正确答案:B

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

int arr[5] = {1, 2, 3, 4, 5};
int p = arr[1];
cout << (p + 2) << endl;
A. 1
B. 2
C. 3
D. 4

正确答案:D

7、以下关于 C++ 求最小值函数 min() 的描述,不正确的是( )

A. 函数必须返回一个值
B. 该函数可以嵌套调用
C. 调用 min(5) 是错误的,不能通过编译
D. 调用 min() (不传任何参数)可以通过编译,结果为 0

正确答案:D

8、在一个特定的计算机系统中,假如 unsigned int 类型需要占用2个字节的存储空间(每个字节有8位),则 unsigned int 可以表示的数据范围是( )

A. 0 ~ 65535
B. 0 ~ 65536
C. -65536 ~ 65535
D. 0 ~ 32767

正确答案:A

9、以下代码执行后,数组 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];
}
A. {2,1,4,3,6,5}
B. {1,2,3,4,5,6}
C. {3,1,4,2,5,3}
D. {1,3,2,5,4,6}

正确答案:A

10、a & b | (c ^ d) ,其中 a = 3, b = 7, c = 15, d = 4 ,计算结果是( )

A. 十进制11
B. 二进制11
C. 八进制11
D. 十六进制11

正确答案:A

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

int t = x--;
t -= x;
cout << t << endl;
A. 0
B. -1
C. 1
D. 死循环

正确答案:C

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

在这里插入图片描述

A. 优秀
B. 及格
C. 不及格
D. 没有输出

正确答案:B

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;
	}
}
A. 10
B. 11
C. 14
D. 15

正确答案:B

14、以下关于 C++ 中 abs() 函数的描述,正确的是( )

A. abs() 函数可用于计算 int 类型整数的绝对值,头文件为 <cmath><cstdlib>
B. 调用 abs(3.14) 可以四舍五入得到 3
C. abs(-1, -2) 的返回值是 1
D. 若传入负数浮点数, abs() 会自动截断小数部分后返回整数绝对值

正确答案:A

15、如果字符串 s 的值是 GESP ,以下代码 s 的最后结果是( )

for (int i = 0; i < s.length(); i++) {
	s[i] = toupper(s[i] + i);
}
A. GESP
B. HFTR
C. hesp
D. GFUS

正确答案:D

判断题(每题 2 分,共 20 分)

1、在 C++ 中,数组名不能改变,数组名不能被赋值。

正确答案:正确

2、整型变量 a 的值为 3 ,浮点数变量 b 的值为 3.5 ,在 C++ 编译环境下,经过 a *= b 计算后, a 的值变为 10.5 ,此时如果输出 a ,将输出 10.5 。

正确答案:错误

3、strcmp(str1, str2) 返回 0 表示 str1 大于 str2 ,返回正数表示两者相等。

正确答案:错误

4、以下代码输出结果为 8 。

int a = 5, b = 3;
int c = a++ + ++b;
cout << c << endl;

正确答案:错误

5、位运算符 & 、 | 、 ^ 、 ~ 的优先级高于算术运算符 + 、 - 、 * 、 / 。

正确答案:错误

__6、在 C++ 中, int a[] = {1, 2, 3, 4, 5}; 可以定义一个包含 5 个元素的整型数组。
__

正确答案:正确

7、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;
}

正确答案:正确

8、在 C++ 中, ++ 和 – 运算符只能用于整型变量,不能用于浮点数变量。

正确答案:错误

9、给定一个正整数 a ,当需要计算 -a 的补码时,有这样一个计算技巧:将 a 的二进制形式从右往左扫描,遇到第一个 1 之后,将找到的第一个 1 左边的所有位都取反,能得到 -a 的补码。

正确答案:正确

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

for (int i = 0; i < 5; i++);
{
	cout << "Hello" << endl;
}

正确答案:错误

编程题 (每题 25 分,共 50 分)

密码强度

题目描述

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

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

例如:

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

输入格式

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

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

输出格式

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

输入输出样例 #1

输入 #1

6
PAs1s2an
1a2bCql3
Pa12bsna
ab1da3cd
Paabdbcd
Pa2

输出 #1

Y
Y
Y
N
N
N

说明/提示

样例解释

  • 密码 PAs1s2an 是安全密码(有 8 8 8 位、包含大写字母 PA 和数字 12)。
  • 密码 1a2bCq13 是安全密码(有 8 8 8 位、包含大写字母 C 和数字 123)。
  • 密码 Pa12bsna 是安全密码(有 8 8 8 位、包含大写字母 P 和数字 12)。
  • 密码 ab1da5cd 不是安全密码(没有大写字母)。
  • 密码 Paabdbcd 不是安全密码(没有数字)。
  • 密码 Pa2 不是安全密码(只有 3 3 3 位,太短了)。

数据范围

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

小杨的智慧购物

题目描述

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

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

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

输入格式

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

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

输出格式

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

输入输出样例 #1

输入 #1

2 5
1 1
1 2
1 1
2 3
2 10

输出 #1

4

说明/提示

样例解释

文具清单如下:

  • 文具 1:种类 1,价格 1 1 1
  • 文具 2:种类 1,价格 2 2 2
  • 文具 3:种类 1,价格 1 1 1
  • 文具 4:种类 2,价格 3 3 3
  • 文具 5:种类 2,价格 10 10 10

小杨的选择过程:对于种类 1:有三件商品,价格分别为 1 , 2 , 1 1, 2, 1 1,2,1。其中最便宜的价格是 1 1 1。对于种类 2:有两件商品,价格分别为 3 , 10 3, 10 3,10。其中最便宜的价格是 3 3 3

计算总价:小杨购买这两类文具的总花费为 1 + 3 = 4 1 + 3 = 4 1+3=4

数据范围

对于所有测试点,保证 1 ≤ M ≤ N ≤ 10 5 1 \leq M \leq N \leq 10^5 1MN105 1 ≤ K i ≤ M 1 \leq K_i \leq M 1KiM 1 ≤ P i ≤ 10 3 1 \leq P_i \leq 10^3 1Pi103

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青岛少儿编程-王老师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值