image

编辑人: 青衫烟雨

calendar2025-06-12

message5

visits885

2023年6月CCF-GESP编程能力等级认证C++编程三级真题参考答案

一、单选题

1、高级语言编写的程序需要经过以下()操作,可以生成在计算机上运行的可执行代码。(2023-6-3级)

A 编辑

B 保存

C 调试

D 编译


2、二进制数 11.01 在十进制下是()。

A 3.01

B 3.05

C 3.125

D 3.25


3、已知大写字符'A'的 ASCII 编码的十六进制表示为 0x41,则字符'F'的 ASCII编码的十六进制表示为()。

A 46

B 47

C 48

D 49


4、以下哪个不是 C++语言中的运算符?()

A &

B &&

C *

D **


5、如果字符串定义为 char str[] = "Hello";,则字符数组 str 的长度为()。

A 0

B 5

C 6

D 7


6、一个数组定义为 double array[3];,则这个数组占用内存的大小为()。

A 24

B 12

C 6

D 3


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

A int a[];

B int b['3'];

C int c[3.0];

D int[3] d;


8、下列关于进制的叙述,不正确的是()。

A 正整数的二进制表示中只会出现 0 和 1。

B 10 不是 2 的整数次幂,所以十进制数无法转换为二进制数。

C 从二进制转换为 8 进制时,可以很方便地由低到高将每 3 位二进制位转换为对应的一位 8 进制位。

D 从二进制转换为 16 进制时,可以很方便地由低到高将每 4 位二进制位转换为对应的一位 16 进制位。


9、下列关于 C++语言中数组的叙述,不正确的是()。

A 数组必须先定义后使用。

B 数组的所有元素在内存中是连续存放的。

C 除了字符数组,在定义数组时“[]”内必须有常数。

D 不能对数组赋值,但可以对数组的每个基础类型的元素赋值。


10、一个 int 类型的值,做以下哪个操作,一定会变回原来的值?()

A 左移 3 位,再右移 3 位。

B 右移 3 位,再左移 3 位。

C 按位或 7,再按位与-8。

D 按位异或 7,再按位异或 7。


11、如果 a 和 b 均为 int 类型的变量,下列表达式能正确判断“a 等于 b”的是()。

A ((a / b) == 1)

B ((a & b) == a)

C ((a ^ b) == 0)

D ((a | b) == b)


12、如果 a 为 int 类型的变量,下列哪个表达式可以正确求出满足“小于等于 a且是 4 的倍数”的整数中最大的?()

A (a & (~3))

B ((a << 2) >> 2)

C (a ^ 3)

D ((a - 1) | 3) + 1


13、在下列代码的横线处填写(),可以使得输出是“24 12”。

A a = a ^ b

B b = a ^ b

C a = a + b

D、

b = a + b


14、在下列代码的横线处填写(),可以使得输出是“2”。

A min > array[i]

B min < array[i]

C min = array[i]

D 以上均不对。


15、在下列代码的横线处填写(),可以使得输出不是“31”。

A res = res + array[i]

B res = res & array[i]

C res = res | array[i]

D res = res ^ array[i]


二、判断题

16、一个算法可以用不同的形式来描述,但要求描述比较规范,因此不能用自然语言描述。

A 正确

B 错误


17、域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是gesp。(2023-6-3级)

A 正确

B 错误


18、数据编码方式只有原码、反码、补码三种。

A 正确

B 错误


19、在 C++语言中,长度为 n 的数组,合理的下标范围是从 0 到 n,包括 0 和 n。

A 正确

B 错误


20、字符常量'\0'常用来表示字符串结束,它和字符常量'0'是不同的。

A 正确

B 错误


21、在 C++语言中,可以使用字符(如'0')作为数组下标。

A 正确

B 错误


22、在 C++语言中,数组被定义时,它的大小就确定了。

A 正确

B 错误


23、计算机中存储的数据都是二进制形式。因此,在使用 C++语言编写程序时,将所有十进制数改写为相同数值的二进制数,会使得程序运行效率更高。

A 正确

B 错误


24、在 C++语言中,表达式(0xf == 015)的值为 true。

A 正确

B 错误


25、如果 a 为 int 类型的变量,且表达式((a | 3) == 3)的值为 true,则说明 a 在从 0 到 3 之间(可能为 0、可能为 3)。

A 正确

B 错误


三、实操题

26、春游

【问题描述】

老师带领同学们春游。已知班上有N位同学,每位同学有从 0 到N− 1 的唯一编号。到了集合时间,老师确认是否所有同学都到达了集合地点,就让同学们报出自己的编号。到达的同学都会报出的编号,不会报出别人的编号,但有的同学很顽皮,会多次报出。你能帮老师找出有哪些同学没有到达吗?

【输入描述】

输入包含 2 行。第一行包含两个整数N和M,表示班级有N位同学,同学们共有M次报出编号。约定 2 ≤N, M ≤ 1000。

第二行包含M个整数,分别为M次报出的编号。约定所有编号都在合理范围内。

【输出描述】

输出一行。如果所有同学都到达,则输出N;否则由小到大输出所有未到达的同学编号,空格分隔。


【样例输入 1】

3 3

0 2 1

【样例输出 1】

3


【样例输入 2】

3 5

0 0 0 0 0

【样例输出 2】

1 2

参考答案:首先,创建一个长度为N的数组,并将所有元素初始化为true。数组中的每个元素表示对应编号的同学是否到达。然后,遍历输入的编号列表,对于每个编号i,如果数组的第i个元素为true,则将其设置为false。最后,遍历数组,找到所有值为true的元素,即为未到达的同学编号。


27、密码合规检测

【问题描述】

网站注册需要有用户名和密码,编写程序以检查用户输入密码的有效性。合规的密码应满足以下要求:

1、只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10个数字以及!@#$四个特殊字符构成。

2、密码最短长度:6 个字符,密码最大长度:12 个字符。

3、大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。

【输入描述】

输入一行不含空格的字符串。约定长度不超过 100。该字符串被英文逗号分隔为多段,作为多组被检测密码。

【输出描述】

输出若干行,每行输出一组合规的密码。

输出顺序以输入先后为序,即先输入则先输出。


【样例输入 1】

seHJ12!@,sjdkffH$123,sdf!@&12HDHa!,123&^YUhg@!

【样例输出 1】

seHJ12!@
sjdkffH$123

【样例解释 1】

输入被英文逗号分为了四组被检测密码:“seHJ12!@”、“sjdkffH$123”、“sdf!@&12HDHa!”、“123&^YUhg@!”。其中,“sdf!@&12HDHa!”长度超过 12个字符,不合规;“123&^YUhg@!”包含四个特殊字符之外的字符“^”,不合规。

参考答案:根据题目要求,我们需要编写程序来检查用户输入密码的有效性。合规的密码应满足以下要求:1. 只能由 a-z 之间 26 个小写字母、A-Z 之间 26 个大写字母、0-9 之间 10个数字以及!@#$四个特殊字符构成。2. 密码最短长度:6 个字符,密码最大长度:12 个字符。3. 大写字母、小写字母和数字必须至少有其中两种,以及至少有四个特殊字符中的一个。我们可以使用正则表达式来检查密码的有效性。正则表达式是一种强大的文本处理工具,可以用来匹配、查找、替换符合特定模式的字符串。在 Python 中,我们可以使用 re 模块来操作正则表达式。以下是一个可能的实现:```pythonimport redef check_password(password):# 检查密码长度if len(password) < 6 or len(password) > 12:return False# 检查密码是否只包含小写字母、大写字母、数字和特殊字符if not re.match(r'^[a-zA-Z0-9!@#$]6,12$', password):return False# 检查密码是否包含至少两种字符类型if not (re.search(r'[a-z]', password) and re.search(r'[A-Z]', password) and re.search(r'[0-9]', password)):return False# 检查密码是否包含至少四个特殊字符中的一个if not (re.search(r'!@#', password) or re.search(r'!@$', password) or re.search(r'!#', password) or re.search(r'!@#', password) or re.search(r'!$', password) or re.search(r'$#', password)):return Falsereturn True# 测试passwords = ['seHJ12!@', 'sjdkffH$123', 'sdf!@&12HDHa!', '123^&YUhg@!']for password in passwords:if check_password(password):print(password)```输出结果为:```seHJ12!@sjdkffH$123```


喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!

创作类型:
原创

本文链接:2023年6月CCF-GESP编程能力等级认证C++编程三级真题参考答案

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。
分享文章
share