一、单选题
1、人们所使用的手机上安装的App通常指的是( )。(2023年9月C++四级)
A 一款操作系统
B 一款应用软件
C 一种通话设备
D 以上都不对
2、下列流程图的输出结果是?( )(2023年9月C++四级)
A 9
B 7
C 5
D 11
3、对包含 n 个元素的数组进行冒泡排序,平均时间复杂度一般为( )。
A O(n)
B O(nlogn)
C O(n2)
D 以上都不正确
4、下列关于C++语言中指针的叙述,不正确的是( )。
A 可以定义指向 int 类型的指针。
B 可以定义指向自定义结构体类型的指针。
C 自定义结构体类型可以包含指针类型的元素。
D 不能定义指向void类型的指针,那没有意义。
5、下列关于C++语言中数组的叙述,不正确的是( )。
A 一维数组可以用来表示数列。
B 二维数组可以用来表示矩阵。
C 三维数组可以用来表示空间中物体的形状。
D 世界是三维的,所以定义四维数组没有意义。
6、下列关于C++语言中函数的叙述,正确的是( )。
A 函数调用前必须定义。
B 函数调用时必须提供足够的实际参数。
C 函数定义前必须声明。
D 函数声明只能写在函数调用前。
7、下列关于C++语言中函数的叙述,不正确的是( )。
A 两个函数的声明可以相同。
B 两个函数的局部变量可以重名。
C 两个函数的参数可以重名。
D 两个函数可以重名。
8、一个二维数组定义为 char array[3][10]; ,则这个二维数组占用内存的大小为( )。
A 10
B 30
C 32
D 48
9、如果 n 为 int 类型的变量,一个指针变量定义为 int *p = &n; ,则下列说法正确的是( )。
A 指针变量 p 的值与变量 n 是相同的。
B 指针变量 p 的值与变量 n 的地址是相同的。
C 指针变量 p 指向的值为 'n' 。
D 指针变量 p 指向的值与变量 n 的地址是相同的。
10、一个三维数组定义为 long long array[6][6][6]; ,则 array[1][2][3] 和 array[3][2][1] 在内存中的位置相差多少字节?( )
A 70字节
B 198字节
C 560字节
D 无法确定
11、如果 a 为 int 类型的变量,且 a 的值为6,则执行 a = ~a; 之后, a 的值会是( )。
A -6
B 6
C -7
D 7
12、一个数组定义为 int a[5] = {1, 2, 3, 4, 5}; ,一个指针定义为 int * p = &a[2]; ,则执行 *p =a[1]; 后,数组a中的值会变为( )。
A {1, 2, 2, 4, 5}
B {1, 3, 3, 4, 5}
C {1, 2, 3, 3, 5}
D {1, 2, 4, 4, 5}
13、下列关于C++语言中异常处理的叙述,正确的是( )。
A 一个 try 子句可以有多个 catch 子句与之对应。
B 如果 try 子句在执行时发生异常,就一定会进入某一个 catch 子句执行。
C 如果 try 子句中没有可能发生异常的语句,会产生编译错误。
D catch 子句处理异常后,会重新执行与之对应的 try 子句。
14、执行以下C++语言程序后,输出结果是( )。
A 0
B 5
C 55
D 无法确定。
15、在下列代码的横线处填写( ),完成对有 n 个 int 类型元素的数组 array 由小到大排序。
A int j = 1; j < n; j++
B int j = 0; j < n; j++
C int j = 0; j < i - 1; j++
D int j = 0; j < i; j++
二、判断题
16、在C++语言中,指针变量在逻辑上指向另一个变量在内存中的位置,指针变量本身不占用内存。
A 正确
B 错误
17、对N个元素的数组执行插入排序算法,通常的时间复杂度是O(N2)。
A 正确
B 错误
18、在C++语言中,每个变量都有其作用域。
A 正确
B 错误
19、第 4 题 在C++语言中,在函数调用时,通过引用传递的参数不会复制实际参数,因此不会额外占用内存。
A 正确
B 错误
20、在C++语言中,可以通过定义结构体,定义一个新的数据类型。
A 正确
B 错误
21、在C++语言中,可以定义结构体类型的数组变量,定义结构体时也可以包含数组成员。
A 正确
B 错误
22、如果希望记录10个最长为99字节的字符串,可以将字符串数组定义为 char s[10][100]; 。
A 正确
B 错误
23、一个可能抛出异常的函数,调用它的位置没有在 try 子句中,会引起编译错误。
A 正确
B 错误
24、== 和 := 都是C++语言的运算符。
A 正确
B 错误
25、通过使用文件重定向操作,可以将程序中输出到 cout 的内容输出到文件中,这是常用的记录程序运行日志的方法之一。
A 正确
B 错误
三、实操题
26、进制转换(2023年9月C++四级))
时间限制:1.0 s
内存限制:128.0 MB
问题描述
N进制数指的是逢N进一的计数制。例如,人们日常生活中大多使用十进制计数,而计算机底层则一般使用二进制。除此之外,八进制和十六进制在一些场合也是常用的计数制(十六进制中,一般使用字母 A 至 F 表示十至十五;本题中,十一进制到十五进制也是类似的)。
在本题中,我们将给出N个不同进制的数。你需要分别把它们转换成十进制数。
提示
对于任意一个L位K进制数,假设其最右边的数位为第0位,最左边的数位为第L-1位,我们只需要将其第i位的数码乘以权值Ki ,再将每位的结果相加,即可得到原K进制数对应的十进制数。下面是两个例子:
1. 八进制数 1362 对应的十进制数为1×83+3×82+6×81+2×80=754 ;
2. 十六进制数 3F0 对应的十进制数为 3×162+15×161+0×160=1008。
输入描述
输入的第一行为一个十进制表示的整数N。接下来N行,每行一个整数K,随后是一个空格,紧接着是一个K进制数,表示需要转换的数。保证所有 进制数均由数字和大写字母组成,且不以 0 开头。保证K进制数合法。
保证N≤1000;保证2≤K≤16
保证所有K进制数的位数不超过9。
输出描述
输出N行,每一个十进制数,表示对应K进制数的十进制数值。
特别提醒
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1
2
8 1362
16 3F0
样例输出 1
754
1008
样例输入 2
2
2 11011
10 123456789
样例输出 2
27
123456789
参考答案:br />对于每一个输入的K进制数,我们需要将其转换为十进制数。转换的方法是,将每一位的数码乘以对应的权值,然后将所有位的结果相加。例如,对于八进制数1362,我们可以这样计算:1 * 8^3 + 3 * 8^2 + 6 * 8^1 + 2 * 8^0 = 754对于十六进制数3F0,我们可以这样计算:3 * 16^2 + 15 * 16^1 + 0 * 16^0 = 1008
27、变长编码(2023年9月C++四级)
时间限制:1.0 s
内存限制:128.0 MB
问题描述
小明刚刚学习了三种整数编码方式:原码、反码、补码,并了解到计算机存储整数通常使用补码。但他总是觉得,生活中很少用到231-1这么大的数,生活中常用的0~100这种数也同样需要用4个字节的补码表示,太浪费了些。
热爱学习的小明通过搜索,发现了一种正整数的变长编码方式。这种编码方式的规则如下:
1. 对于给定的正整数,首先将其表达为二进制形式。例如,(0) {10}=(0) {2},(926) {10}=(1110011110) {2} 。
2. 将二进制数从低位到高位切分成每组7bit,不足 bit的在高位用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。约定 0≤N≤1018。
输出描述
输出一行,输出N对应的变长编码的每个字节,每个字节均以2位十六进制表示(其中,A-F使用大写字母表示),两个字节间以空格分隔。
样例输入1
0
样例输出1
00
样例输入2
926
样例输出2
9E 07
样例输入3
987654321012345678
样例输出3
CE 96 C8 A6 F4 CB B6 DA 0D
参考答案:输入一个正整数N,首先将其转换为二进制形式,然后按照每组7bit的规则进行切分,并在高位用0填补。接着,从低位组开始,为其加入最高位,如果这组是最后一组,则在最高位填上0,否则在最高位填上1。最后,将编码结果转换为十六进制形式,并以2位十六进制表示每个字节,两个字节间以空格分隔输出。
喵呜刷题:让学习像火箭一样快速,快来微信扫码,体验免费刷题服务,开启你的学习加速器!