试卷 2023年9月CCF GESP编程能力认证C++等级考试(三级)试卷
2023年9月CCF GESP编程能力认证C++等级考试(三级)试卷
单选题
第 1 题    单选题

人们所使用的手机上安装的App通常指的是( )

A.

一款操作系统

B.

一款应用软件

C.

一种通话设备

D.

以上都不对

第 2 题    单选题

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

A.
res += array[i];
B.

res *= array[i]

C.

res = array[i]

D.
以上均不对。
第 3 题    单选题

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

A.
a = a >> 8; b = a & 0xff
B.
b = a >> 8; a = a & 0xff;
C.
a = b; b = a & 0xff;
D.
b = a; a = b;
第 4 题    单选题

如果 a 为 char 类型的变量,下列哪个表达式可以正确判断“a是大写字母”?(     )

A.
a - 'A' <= 26
B.
'A' <= a <= 'Z'
C.

'A' <= 'a' <= 'Z'

D.
('A' <= a) && (a <= 'Z')
第 5 题    单选题

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

A.
((a >= b) && (a <= b))
B.
((a >> 1) == (b >> 1))
C.

((a + b) == (a + a))

D.
((a ^ b) == 0)
第 6 题    单选题

如果 a 是 int 类型的变量,下列哪个表达式的值一定为 true ?(     )

A.
a + 1000 - 1000 == a
B.
a * 2 / 2 == a
C.

(a & 1) == 1

D.
(a | 1) == a + 1
第 7 题    单选题

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

A.

可以定义0个元素的数组。


B.

不能定义 -1 个元素的数组。


C.

数组下标越界访问会产生编译错误。

D.

程序运行时发生数组下标的越界访问,程序依然可能正常结束。

第 8 题    单选题

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

A.

只有十进制和二进制能够用来表示小数,八进制和十六进制不可以。

B.

常用的进制包括二进制、八进制、十进制、十六进制,其他进制在日常生活中很少使用。

C.

对任意正整数,其二进制表示不会比它的十进制表示更短。

D.

正整数的八进制表示中,每一位可能出现的最大数字是8。

第 9 题    单选题

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

A.
double a[];
B.
double b[] = {1, 2.0, '3'}
C.

double c[3.0];

D.
double[] d = new double[3];
第 10 题    单选题

一个数组定义为 double array[3]; ,则可合理访问这个数组的元素的下标最大为(     )。

A.

2

B.

3

C.

23

D.

24

第 11 题    单选题

如果数组定义为 long long array[] = {3, 5, 7, 2}; ,则数组 array 占用的字节数为(     )。

A.

32

B.

16

C.

8

D.

4

第 12 题    单选题

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

A.

~

B.

~~

C.

<

D.

<<

第 13 题    单选题

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

A.

4A

B.

4B

C.

4C

D.

52

第 14 题    单选题

下列流程图的输出结果是( )

A.

60

B.

20

C.

5

D.

1

第 15 题    单选题

在下列代码的输出是( )。

A.

15

B.

28

C.

45

D.

55

判断题
第 16 题    判断题
二进制数 101.101 在十进制下是 5.005。
A.
正确
B.
错误
第 17 题    判断题

在C++语言中,位运算符也有类似“先乘除、后加减”的优先级规则。因此,使用时应注意合理使用括号。

A.
正确
B.
错误
第 18 题    判断题

在C++语言中,表达式 (0xff == 255) 的值为 true 。

A.
正确
B.
错误
第 19 题    判断题

著名的哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和。我们可以通过枚举法来证明它。

A.
正确
B.
错误
第 20 题    判断题
在C++语言中,定义数组时,[ ] 中必须指定元素个数。
A.
正确
B.
错误
第 21 题    判断题

在C++语言中,数组下标的大小决定元素在逻辑上的先后顺序,与元素在内存中位置的先后顺序无关。

A.
正确
B.
错误
第 22 题    判断题

在C++语言中,所有 int 类型的值,经过若干次左移操作( << )后,它们的值总会变为 0 。

A.
正确
B.
错误
第 23 题    判断题

在C++语言中,长度为 的数组,访问下标为 的元素会引起编译错误。

A.
正确
B.
错误
第 24 题    判断题

字符常量 '3' 的值和 int 类型常量 3 的值是相同的,只是占用的字节数不同。

A.
正确
B.
错误
第 25 题    判断题

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

A.
正确
B.
错误
编程题
第 26 题    问答题

试题名称:小杨的储蓄

时间限制:1.0 s

内存限制:128.0 MB

【问题描述】

小杨共有N个储蓄罐,编号从0到N-1。从第 1 天开始,小杨每天都会往存钱罐里存钱。具体来说,第i天他会挑选一个存钱罐ai,并存入i元钱。过了D天后,他已经忘记每个储蓄罐里都存了多少钱了,你能帮帮他吗?

【输入描述】

输入 2 行,第一行两个整数N,D;第二行D个整数,其中第i个整数为ai(保证0≤ai≤N-1 )。

每行的各个整数之间用单个空格分隔。

保证 1≤N≤1000,1≤D≤1000;

【输出描述】

输出 个用单个空格隔开的整数,其中第 个整数表示编号为i-1的存钱罐中有多少钱(i=1,...,N)。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

 

样例输入 1

2 3
0 1 0

样例输出 1

4 2

样例解释 1

小杨在第1天、第2天、第3天分别向0号、1号、0号存钱罐存了1元钱、2元钱、3元钱,因此0号存钱罐有1+3=4元钱,而1号存钱罐有2元钱。

 

样例输入 2

3 5
0 0 0 2 0

样例输出 2

11 0 4
第 27 题    问答题

试题名称: 进制判断

时间限制:1.0 s

内存限制:128.0 MB

【问题描述】

进制数指的是逢N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五)。

现在有N个数,请你分别判断他们是否可能是二进制、八进制、十进制、十六进制。例如, 15A6F 就只可能是十六进制,而1011 则是四种进制皆有可能。

【输入描述】

输入的第一行为一个十进制表示的整数N。接下来N行,每行一个字符串,表示需要判断的数。保证所有字符串均由数字和大写字母组成,且不以 0 开头。保证不会出现空行。

保证1≤N≤1000,保证所有字符串长度不超过10。

【输出描述】

输出N行,每行4个数,用空格隔开,分别表示给定的字符串是否可能表示一个二进制数、八进制数、十进制数、十六进制数。使用 1 表示可能,使用 0 表示不可能。

例如,对于只可能是十六进制数的 15A6F ,就需要输出 0 0 0 1 ;而对于四者皆有可能的 1011 ,则需要输出 1 1 1 1 。

特别提醒

在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。

 

样例输入 1

2
15A6F
1011

样例输出 1

0 0 0 1
1 1 1 1

样例输入 2

4
1234567
12345678
FF
GG

样例输出 2

0 1 1 1
0 0 1 1
0 0 0 1
0 0 0 0
答题卡
单选题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
判断题
编程题
26 27
题目总数:27
总分数:100
时间:120分钟