人们所使用的手机上安装的 App 通常指的是( )。
B:手机上的 App 指 Application,即应用软件。操作系统(如 Android/iOS)是底层平台,应用软件基于操作系统运行;通话设备是硬件范畴。
下列流程图的输出结果是( )。
A:9。按流程图顺序执行各步运算,最终输出 9(需根据流程图节点图示模拟各分支与中间结果)。
对包含 n 个元素的数组进行冒泡排序,平均时间复杂度一般为( )。
C:O(n²)。冒泡排序通过相邻交换冒泡,每趟最多 n-1 次比较,共 n-1 趟,平均/最坏 O(n²);最好情况(已有序)O(n)。
下列关于 C++ 语言中指针的叙述,不正确的是( )。
D:不能定义指向 void 类型的指针,那没有意义——错误。void* 是合法的通用指针类型,可指向任何数据类型,常用于泛型编程与内存操作。
下列关于 C++ 语言中数组的叙述,不正确的是( )。
D:世界是三维的,所以定义四维数组没有意义——错误。四维数组常用于时间+空间等多维数据建模(如时空分析),是否使用取决于问题需求。
下列关于 C++ 语言中函数的叙述,正确的是( )。
B:函数调用时必须提供足够的实际参数。C++ 函数调用要求实参与形参数量类型匹配;A 错(先声明后调用亦可),C 错(可省略声明直接定义),D 错(声明可写在任何位置)。
下列关于 C++ 语言中函数的叙述,不正确的是( )。
A:两个函数的声明可以相同——错误。两个函数名字+参数列表完全相同(仅返回类型不同)会冲突/重定义;C++ 通过参数列表不同实现重载。
一个二维数组定义为 char array[3][10];,则这个二维数组占用内存的大小为( )。
B:30 字节。char 占 1 字节,3 行×10 列 = 30 个 char = 30 字节(按行连续存储)。
如果 n 为 int 类型的变量,一个指针变量定义为 int *p = &n;,则下列说法正确的是( )。
B:指针变量 p 的值与变量 n 的地址是相同的。p=&n 使 p 存的是 n 的地址;A 错(p 是地址不是值),C 错(指向 int 不是字符 'n'),D 错(指向 n 的值不是地址)。
一个三维数组定义为 long long array[6][6][6];,则 array[1][2][3] 和 array[3][2][1] 在内存中的位置相差多少字节?( )
C:560 字节。long long 8 字节。array[6][6][6] 按行优先,array[1][2][3] 偏移 1·36+2·6+3=51,array[3][2][1] 偏移 3·36+2·6+1=121,差 70 个 long long = 70·8=560 字节。
如果 a 为 int 类型的变量,且 a 的值为 ,则执行 a = ~a; 之后,a 的值会是( )。
C:-7。a=6 二进制 ...00000110,按位取反 ~a = ...11111001,这是补码表示 -7(C++ int 通常为补码)。
一个数组定义为 int a[5] = {1, 2, 3, 4, 5};,一个指针定义为 int * p = &a[2];,则执行 *p = a[1]; 后,数组 a 中的值会变为( )。
A:{1,2,2,4,5}。p=&a[2] 指向 a[2]=3,*p=a[1]=2 把 a[2] 改为 2,数组变为 1,2,2,4,5。
下列关于 C++ 语言中异常处理的叙述,正确的是( )。
A:一个 try 子句可以有多个 catch 子句与之对应。多个 catch 按异常类型依次匹配;B 错(未匹配类型会调用 terminate),C 错(try 内可以无 throw 语句),D 错(catch 不会重跑 try)。
执行以下 C++ 语言程序后,输出结果是( )。
01#include <iostream> 02using namespace std; 03 04int main() { 05 int fib[10]; 06 fib[0] = 0; 07 fib[1] = 1; 08 for (int i = 2; i < 10; i++) 09 fib[i] = fib[i - 1] + fib[i - 2]; 10 cout << fib[10] << endl; 11 return 0; 12}
D:无法确定。代码中 fib[10] 数组大小为 10(索引 0~9),访问 fib[10] 是数组越界,结果不可预测(UB);即使按循环逻辑算到 fib[9]=34,越界仍是 UB。
在下列代码的横线处填写( ),完成对有 n 个 int 类型元素的数组 array 由小到大排序。
01void BubbleSort(int array[], int n) { 02 for (int i = n; i >= 2; i--) 03 for (____________) // 在此处填入代码 04 if (array[j] > array[j + 1]) { 05 int t = array[j]; 06 array[j] = array[j + 1]; 07 array[j + 1] = t; 08 } 09}
C:int j = 0; j < i - 1; j++。冒泡排序外层 i 表示当前未排序区右端,内层 j 在 [0, i-1) 内冒泡,把最大值冒到 i 位置;A/B 边界错,D 越界(j+1 会等于 i)。
在 C++ 语言中,指针变量在逻辑上指向另一个变量在内存中的位置,指针变量本身不占用内存。
错。指针变量本身也占用内存(32 位 4 字节,64 位 8 字节),存的是另一个变量的地址;指针变量指向的才是目标。
对 N 个元素的数组执行插入排序算法,通常的时间复杂度是 。
正确。插入排序每趟把元素插入已排序区,最坏/平均比较移动 O(N²),只有已基本有序时接近 O(N)。
在 C++ 语言中,每个变量都有其作用域。
正确。C++ 每个变量都有作用域(全局/局部/命名空间/类作用域等),离开作用域变量不可访问。
在 C++ 语言中,在函数调用时,通过引用传递的参数不会复制实际参数,因此不会额外占用内存。
错。引用传递虽不复制实参值,但仍需在栈帧中存储引用(通常占一个指针大小),并非完全「不额外占用内存」;严格的说法是「避免了大对象拷贝的开销」。
在 C++ 语言中,可以通过定义结构体,定义一个新的数据类型。
正确。C++ 通过 struct 定义新数据类型,结构体可作为类型名使用。
在 C++ 语言中,可以定义结构体类型的数组变量,定义结构体时也可以包含数组成员。
正确。结构体可作为数组元素类型(结构体数组),结构体内也可包含数组成员,复合使用均合法。
如果希望记录 个最长为 字节的字符串,可以将字符串数组定义为 char s[10][100];。
正确。char s[10][100] 中 10 行(10 个字符串),每行 100 字节(最多存 99 字符 + '\0'),可容纳 10 个最长 99 字节的字符串。
一个可能抛出异常的函数,调用它的位置没有在 try 子句中,会引起编译错误。
错。可能抛异常的函数不在 try 块内不会引起编译错误,运行时才根据是否真的抛出决定是否中断或传播异常。
== 和 := 都是 C++ 语言的运算符。
错。== 是 C++ 关系运算符(相等比较),:= 不是 C++ 运算符(仅在 Pascal 等语言及复合赋值声明中出现),题目把 == 与 := 并列不成立。
通过使用文件重定向操作,可以将程序中输出到 cout 的内容输出到文件中,这是常用的记录程序运行日志的方法之一。
正确。cout 可通过操作系统重定向(> file 或管道)输出到文件,是常用的日志记录方法。