2023年6月 GESP C++ 4级
2023年6月 GESP C++ 4级认证考试真题(含编程操作题部分)
// questions
题目预览
高级语言编写的程序需要经过以下( )操作,可以生成在计算机上运行的可执行代码。
编辑
保存
调试
编译
排序算法是稳定的(Stable Sorting),就是指排序算法可以保证,在待排序数据中有两个相等记录的关键字 RRR 和 SSS(RRR 出现在 SSS 之前),在排序后的列表中 RRR 也一定在 SSS 前。下面关于排序稳定性的描述,正确的是( )。
冒泡排序是不稳定的。
插入排序是不稳定的。
选择排序是不稳定的。
以上都不正确。
下列关于 C++ 语言中指针的叙述,不正确的是( )。
指针变量中存储的是内存地址。
定义指针变量时必须指定其指向的类型。
指针变量只能指向基本类型变量,不能指向指针变量。
指针变量指向的内存地址不一定能够合法访问。
下列关于 C++ 语言中数组的叙述,不正确的是( )。
一维数组在内存中一定是连续存放的。
二维数组是一维数组的一维数组。
二维数组中的每个一维数组在内存中都是连续存放的。
二维数组在内存中可以不是连续存放的。
下列关于 C++ 语言中函数的叙述,正确的是( )。
函数必须有名字。
函数必须有参数。
函数必须有返回值。
函数定义必须写在函数调用前。
下列关于 C++ 语言中变量的叙述,正确的是( )。
变量定义后可以一直使用。
两个变量的变量名不能是相同的。
两个变量的变量名可以相同,但它们的类型必须是不同的。
两个变量的变量名可以相同,但它们的作用域必须是不同的。
一个二维数组定义为 double array[3][10];,则这个二维数组占用内存的大小为( )。
303030
606060
120120120
240240240
一个变量定义为 int *p = nullptr; ,则下列说法正确的是( )。
该指针变量的类型为 int 。
该指针变量指向的类型为 int 。
该指针变量指向的内存地址是随机的。
访问该指针变量指向的内存会出现编译错误。
一个二维数组定义为 int array[5][3];,则 array[1][2] 和 array[2][1] 在内存中的位置相差多少字节?( )
222 字节。
444 字节。
888 字节。
无法确定。
如果 aaa 为 int 类型的变量,且 aaa 的值为 666,则执行 a &= 3; 之后,aaa 的值会是( )。
333
999
222
777
一个数组定义为 int a[5] = {1, 2, 3, 4, 5};,一个指针定义为 int *p = &a[2];,则执行 a[1] = *p; 后,数组 aaa 中的值会变为( )。
{111, 333, 333, 444, 555}
{222, 222, 333, 444, 555}
{111, 222, 222, 444, 555}
{111, 222, 333, 444, 555}
以下哪个函数声明在调用时可以传递二维数组的名字作为参数?( )
void BubbleSort(int a[][4]);
void BubbleSort(int a[3][]);
void BubbleSort(int a[][]);
void BubbleSort(int ** a);
在下列代码的横线处填写( ),可以使得输出是“20 10”。
int x, int y
int * x, int * y
int a, int b
int & a, int & b
执行以下 C++ 语言程序后,输出结果是( )。
333
303030
333333
无法确定。
在下列代码的横线处填写( ),完成对有 nnn 个 int 类型元素的数组 array 由小到大排序。
array[min] > array[j]
array[min] > array[i]
min > array[j]
min > array[i]
域名是由一串用点分隔的名字来标识互联网上一个计算机或计算机组的名称,CCF 编程能力等级认证官方网站的域名是 gesp.ccf.org.cn,其中顶级域名是 gesp。
数列 111, 111, 222, 333, 555, 888 ... 是以意大利数学家列昂纳多·斐波那契命名的数列,从第三个数开始,每个数是前面两项之和。如果计算该数列的第 nnn 项(其中 n>3n > 3n>3)fib(n),我们采用如下方法:① 令 fib(1) = fib(2) = 1 ② 用循环 for i = 3 to n 分别计算 f(i) ③ 输出 fib(n)。这体现了递推的编程思想。
在 C++ 语言中,函数的参数默认以引用传递方式进行传递。
在 C++ 语言中,可以定义四维数组,但在解决实际问题时不可能用到,因为世界是三维的。
在 C++ 语言中,一个函数没有被调用时,它的参数不占用内存。
在 C++ 语言中,如果一个函数可能抛出异常,那么一定要在 try 子句里调用这个函数。
如果希望记录 101010 个最长为 999999 字节的字符串,可以将字符串数组定义为 char s[100][10];。
字符常量 '0' 和 '\0' 是等价的。
>= 和 >>= 都是 C++ 语言的运算符。
由于文件重定向操作,程序员在使用 C++ 语言编写程序时无法确定通过 cout 输出的内容是否会被输出到屏幕上。
试题名称:幸运数
时间限制:1.0 s | 内存限制:128.0 MB
题目描述
小明发明了一种 “幸运数”。一个正整数,其偶数位不变(个位为第 111 位,十位为第 222 位,以此类推),奇数位做如下变换:将数字乘以 777,如果不大于 999 则作为变换结果,否则把结果的各位数相加,如果结果不大于 999 则作为变换结果,否则(结果仍大于 999)继续把各位数相加,直到结果不大于 999,作为变换结果。变换结束后,把变换结果的各位数相加,如果得到的和是 888 的倍数,则称一开始的正整数为幸运数。
例如,163471634716347:第 111 位为 777,乘以 777 结果为 494949,大于 999,各位数相加为 131313,仍大于 999,继续各位数相加,最后结果为 444;第 333 位为 333,变换结果为 333;第 555 位为 111,变换结果为 777。最后变化结果为 763447634476344,对于结果 763447634476344 其各位数之和为 242424,是 888 的倍数。因此 163471634716347 是幸运数。
输入格式
输入第一行为正整数 NNN,表示有 NNN 个待判断的正整数。约定 1≤N≤201 \le N \le 201≤N≤20。
从第 222 行开始的 NNN 行,每行一个正整数,为待判断的正整数。约定这些正整数小于 101210^{12}1012。
输出格式
输出 NNN 行,对应 NNN 个正整数是否为幸运数,如是则输出 T,否则输出 F。
提示:不需要等到所有输入结束再依次输出,可以输入一个数就判断一个数并输出,再输入下一个数。
样例输入 #1
2
16347
76344
样例输出 #1
T
F
试题名称:图像压缩
时间限制:1.0 s | 内存限制:512.0 MB
题目描述
图像是由很多的像素点组成的。如果用 000 表示黑,255255255 表示白,000 和 255255255 之间的值代表不同程度的灰色,则可以用一个字节表达一个像素(取值范围为十进制 0-255、十六进制 00-FF)。这样的像素组成的图像,称为 256256256 级灰阶的灰度图像。
现在希望将 256256256 级灰阶的灰度图像压缩为 161616 级灰阶,即每个像素的取值范围为十进制 0-15、十六进制 0-F。压缩规则为:统计出每种灰阶的数量,取数量最多的前 161616 种灰阶(如某种灰阶的数量与另外一种灰阶的数量相同,则以灰阶值从小到大为序),分别编号 0-F(最多的编号为 0,以此类推)。其他灰阶转换到最近的 161616 种灰阶之一,将某个点的灰阶值(灰度,而非次数)与 161616 种灰阶中的一种相减,绝对值最小即为最近,如果绝对值相等,则编号较小的灰阶更近。
输入格式
输入第 111 行为一个正整数 n(10≤n≤20)n(10\le n \le 20)n(10≤n≤20),表示接下来有 nnn 行数据组成一副 256256256 级灰阶的灰度图像。
第 222 行开始的 nnn 行,每行为长度相等且为偶数的字符串,每两个字符用十六进制表示一个像素。约定输入的灰度图像至少有 161616 种灰阶。约定每行最多 202020 个像素。
输出格式
第一行输出压缩选定的 161616 种灰阶的十六进制编码,共计 323232 个字符。
第二行开始的 nnn 行,输出压缩后的图像,每个像素一位十六进制数表示压缩后的灰阶值。
样例输入 #1
10
00FFCFAB00FFAC09071B5CCFAB76
00AFCBAB11FFAB09981D34CFAF56
01BFCEAB00FFAC0907F25FCFBA65
10FBCBAB11FFAB09981DF4CFCA67
00FFCBFB00FFAC0907A25CCFFC76
00FFCBAB1CFFCB09FC1AC4CFCF67
01FCCBAB00FFAC0F071A54CFBA65
10EFCBAB11FFAB09981B34CFCF67
01FFCBAB00FFAC0F071054CFAC76
1000CBAB11FFAB0A981B84CFCF66
样例输出 #1
ABCFFF00CB09AC07101198011B6776FC
321032657CD10E
36409205ACC16D
B41032657FD16D
8F409205ACF14D
324F326570D1FE
3240C245FC411D
BF4032687CD16D
8F409205ACC11D
B240326878D16E
83409205ACE11D
说明/提示
【样例 111 解释】
灰阶 AB、CF 和 FF 出现 141414 次,00 出现 101010 次,CB 出现
999 次,09 出现 777 次,AC 出现 666 次,07 出现 555 次,10、11
和 98 出现 444 次,01、1B、67、76 和 FC 出现 333 次。