选择题 共15道

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15


判断题 共10道

16 17 18 19 20 21 22 23 24 25


编程题 共2道

26 27

477 | 202309GESP C++四级试卷-练习
选择题 共15道
01

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

2分
登录后查看选项
02

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

2分
登录后查看选项
03

对包含 n 个元素的数组进行冒泡排序,平均时间复杂度一般为( )。

2分
登录后查看选项
04

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

2分
登录后查看选项
05

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

2分
登录后查看选项
06

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

2分
登录后查看选项
07

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

2分
登录后查看选项
08

一个二维数组定义为 char array[3][10]; ,则这个二维数组占用内存的大小为( )。

2分
登录后查看选项
09

如果 n 为 int 类型的变量,一个指针变量定义为 int *p = &n; ,则下列说法正确的是( )。

2分
登录后查看选项
10

一个三维数组定义为 long long array[6][6][6]; ,则 array[1][2][3] 和 array[3][2][1] 在内存中的位置相差多少字节?( )

2分
登录后查看选项
11

如果 a 为 int 类型的变量,且 a 的值为6,则执行 a = ~a; 之后, a 的值会是( )。

2分
登录后查看选项
12

一个数组定义为 int a[5] = {1, 2, 3, 4, 5}; ,一个指针定义为 int * p = &a[2]; ,则执行 *p =a[1]; 后,数组a中的值会变为( )。

2分
登录后查看选项
13

下列关于C++语言中异常处理的叙述,正确的是( )。

2分
登录后查看选项
14

执行以下C++语言程序后,输出结果是( )。

2分
登录后查看选项
15

在下列代码的横线处填写( ),完成对有 n 个 int 类型元素的数组 array 由小到大排序。

image.png

2分
登录后查看选项
判断题 共10道
16

在C++语言中,指针变量在逻辑上指向另一个变量在内存中的位置,指针变量本身不占用内存。

2分
登录后查看选项
17

对 个元素的数组执行插入排序算法,通常的时间复杂度是image.png

2分
登录后查看选项
18

在C++语言中,每个变量都有其作用域。

2分
登录后查看选项
19

在C++语言中,在函数调用时,通过引用传递的参数不会复制实际参数,因此不会额外占用内存。

2分
登录后查看选项
20

在C++语言中,可以通过定义结构体,定义一个新的数据类型。

2分
登录后查看选项
21

在C++语言中,可以定义结构体类型的数组变量,定义结构体时也可以包含数组成员。

2分
登录后查看选项
22

如果希望记录10个最长为99字节的字符串,可以将字符串数组定义为 char s[10][100]; 。

2分
登录后查看选项
23

一个可能抛出异常的函数,调用它的位置没有在 try 子句中,会引起编译错误。

2分
登录后查看选项
24

== 和 := 都是C++语言的运算符。

2分
登录后查看选项
25

通过使用文件重定向操作,可以将程序中输出到 cout 的内容输出到文件中,这是常用的记录程序运行日志的方法之一。

2分
登录后查看选项
编程题 共2道
26

进制转换


问题描述


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

     在本题中,我们将给出 N个不同进制的数。你需要分别把它们转换成十进制数。


提示


      对于任意一个L 位 K进制数,假设其最右边的数位为第 0位,最左边的数位为第 L-1位,我们只需要将其第 i位的数码乘以权值 ,再将每位的结果相加,即可得到原K 进制数对应的十进制数。下面是两个例子:

1. 八进制数 1362 对应的十进制数为

2. 十六进制数 3F0 对应的十进制数为


输入描述


     输入的第一行为一个十进制表示的整数N 。接下来 N行,每行一个整数K ,随后是一个空格,紧接着是一个K 进制数,表示需要转换的数。保证所有 K进制数均由数字和大写字母组成,且不以 0 开头。保证K 进制数合法。保证所有 K进制数的位数不超过9 。


输出描述


     输出 N行,每一个十进制数,表示对应K 进制数的十进制数值。


特别提醒


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


样例输入 1

样例输出 1

样例输入 2

样例输出 2

25分
登录后作答
27

变长编码


问题描述


     小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到image.png 这么大的数,生活中常用的0~100 这种数也同样需要用 4个字节的补码表示,太浪费了些。热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:

1. 对于给定的正整数,首先将其表达为二进制形式。例如,(0){10}=(0){2} ,(926){10}=(1110011110){2} 。

2. 将二进制数从低位到高位切分成每组7 bit,不足 7bit的在高位用 0填补。例如,(0){2} 变为0000000 的一组,(1110011110){2}变为 0011110和0000111 的两组。

3. 由代表低位的组开始,为其加入最高位。如果这组是最后一组,则在最高位填上0 ,否则在最高位填上1 。于是,0 的变长编码为 00000000一个字节,926 的变长编码为10011110 和00000111 两个字节。

      这种编码方式可以用更少的字节表达比较小的数,也可以用很多的字节表达非常大的数。例如,987654321012345678的二进制为(0001101 1011010 0110110 1001011 1110100 0100110 1001000 0010110 1001110){2},于是它的变长编码为(十六进制表示) CE 96 C8 A6 F4 CB B6 DA 0D ,共9 个字节。

      你能通过编写程序,找到一个正整数的变长编码吗?

输入描述


输入第一行,包含一个正整数N 。约定


输出描述


输出一行,输出N 对应的变长编码的每个字节,每个字节均以 2位十六进制表示(其中, A-F 使用大写字母表示),两个字节间以空格分隔。


样例输入1

样例输出1

样例输入2

样例输出2

样例输入3

样例输出3

25分
登录后作答