第 1 题 ⼈们所使⽤的⼿机上安装的App通常指的是( )。
- A. ⼀款操作系统
- B. ⼀款应⽤软件
- C. ⼀种通话设备
- D. 以上都不对
- A. 9
- B. 7
- C. 5
- D. 11
第 3 题 对包含 n 个元素的数组进⾏冒泡排序,平均时间复杂度⼀般为( )。
- A. O(n)
- B. O(n log n)
- C. O(n^2)
- 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++语⾔程序后,输出结果是( )。
#include
using namespace std; int main(){ int fib[10]; fib[0] = 0; fib[1] = 1; for(int i = 2; i < 10; i++) fib[i] = fib[i - 1] + fib[i - 2]; cout << fib[10] << endl; return 0;
- A. 0
- B. 5
- C. 55
- D. ⽆法确定。
第 15 题 在下列代码的横线处填写( ),完成对有n 个int类型元素的数组array 由⼩到⼤排序。
void BubbleSort(int array[], int n){ for(int i = n; i >= 2; i--) for(_________)//在此处填入代码 if(array[j] > array[j + 1]){ int t = array[j]; array[j] = array[j + 1]; array[j + 1] = t; } }
- 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++
第 1 题 在C++语⾔中,指针变量在逻辑上指向另⼀个变量在内存中的位置,指针变量本⾝不占⽤内存。( )
第 2 题 对 (n) 个元素的数组执⾏插⼊排序算法,通常的时间复杂度是 (O(n^2))。( )
第 3 题 在C++语⾔中,每个变量都有其作⽤域。( )
第 4 题 在C++语⾔中,在函数调⽤时,通过引⽤传递的参数不会复制实际参数,因此不会额外占⽤内存。( )
第 5 题 在C++语⾔中,可以通过定义结构体,定义⼀个新的数据类型。( )
第 6 题 在C++语⾔中,可以定义结构体类型的数组变量,定义结构体时也可以包含数组成员。( )
第 7 题 如果希望记录10个最长为99字节的字符串,可以将字符串数组定义为
char s[10][100];
。( )
第 8 题 ⼀个可能抛出异常的函数,调⽤它的位置没有在
try
⼦句中,会引起编译错误。( )
第 9 题
==
和:=
都是C++语⾔的运算符。( )
第 10 题 通过使⽤⽂件重定向操作,可以将程序中输出到
cout
的内容输出到⽂件中,这是常⽤的记录程序运⾏⽇志的⽅法之⼀。( )
N进制数指的是逢N进⼀的计数制。例如,⼈们⽇常⽣活中⼤多使⽤⼗进制计数,⽽计算机底层则⼀般使⽤⼆进制。除此之外,⼋进制和⼗六进制在⼀些场合也是常⽤的计数制(⼗六进制中,⼀般使⽤字母 A ⾄ F 表⽰⼗⾄⼗五;本题中,⼗⼀进制到⼗五进制也是类似的)。
在本题中,我们将给出N个不同进制的数。你需要分别把它们转换成⼗进制数。
对于任意⼀个L位K进制数,假设其最右边的数位为第0位,最左边的数位为第L-1 位,我们只需要将其第 i 位的数码乘以权值 ( K^i ),再将每位的结果相加,即可得到原K进制数对应的⼗进制数。下⾯是两个例⼦:
输⼊的第⼀⾏为⼀个⼗进制表⽰的整数 N。接下来 N⾏,每⾏⼀个整数K,随后是⼀个空格,紧接着是⼀个K进制数,表⽰需要转换的数。保证所有K 进制数均由数字和⼤写字母组成,且不以 0 开头。保证K进制数合法。保证N ≤ 1000; 保证 2 ≤ K ≤16;
保证所有K进制数的位数不超过9。
输出N⾏,每⼀个⼗进制数,表⽰对应K进制数的⼗进制数值。
2
8 1362
16 3F0
754
1008
2
2 11011
10 123456789
27
123456789
⼩明刚刚学习了三种整数编码⽅式:原码、反码、补码,并了解到计算机存储整数通常使⽤补码。但他总是觉得⽣活中很少⽤到(2^31) - 1这么⼤的数,⽣活中常⽤的0 - 100这种数也同样需要⽤4个字节的补码表⽰,太浪费了些。
热爱学习的⼩明通过搜索,发现了⼀种正整数的变长编码⽅式。这种编码⽅式的规则如下:
这种编码⽅式可以⽤更少的字节表达⽐较⼩的数,也可以⽤很多的字节表达⾮常⼤的数。例如,987654321012345678 的⼆进制为(0001101 1011010 0110110 1001011 1110100 0100110 1001000 0010110 1001110){2},于是它的变长编码为(⼗六进制表⽰)CE 96 C8 A6 F4 CB B6 DA 0D,共 9 个字节。
你能通过编写程序,找到⼀个正整数的变长编码吗?
输⼊第⼀⾏,包含⼀个正整数N。约定 0 ≤ N ≤ (10 ^ 18)
输出⼀⾏,输出N对应的变长编码的每个字节,每个字节均以 2 位⼗六进制表⽰(其中 A-F 使⽤⼤写字母表⽰),两个字节间以空格分隔。
0
00
926
9E 07
987654321012345678
CE 96 C8 A6 F4 CB B6 DA 0D