一、单选题(每题2分,共30分) 1、⼈们所使用的手机上安装的App通常指的是( )。 A.⼀款操作系统 B.⼀款应用软件 C.⼀种通话设备 D.以上都不对 【答案】B 【考纲知识点】 计算机基础 【解析】本题属于考察计算机基础知识。APP是英语单词application的简写,代表应用软件的意思。 2、下列流程图的输出结果是?( ) A. 9 B. 7 C. 5 D. 11 【答案】A 【考纲知识点】 流程图和多层循环语句 【解析】本题属于考察计算机循环结构嵌套选择结构知识。根据流程图,n<=5时会一直循环,每次循环先判断是否满足m*n>20的条件,然后对m进行不同的赋值。例如:n=1,m=1,m*n不大于20,m会计算,赋值为3,依次类推,最终m的结果是9,选A。 3、对包含n个元素的数组进⾏冒泡排序 ,平均时间复杂度一般为()。
A.O(n) B.O(n log n) C.O(n2) D.以上都不正确 【答案】C 【考纲知识点】 冒泡排序 【解析】本题属于考察简单排序算法的时间复杂度,选C。 4、下列关于C++语⾔中指针的叙述 ,不正确的是( )。 A.可以定义指向int类型的指针。 B.可以定义指向⾃定义结构体类型的指针。 C.⾃定义结构体类型可以包含指针类型的元素。 D.不能定义指向void类型的指针 ,那没有意义。 【答案】D 【考纲知识点】 指针的概念及使用 【解析】本题属于考察计算机指针知识。可以指向void类型。 5、下列关于C++语⾔中数组的叙述 ,不正确的是( )。 A.一维数组可以用来表示数列。 B.二维数组可以用来表示矩阵。 C.三维数组可以用来表示空间中物体的形状。 D.世界是三维的 ,所以定义四维数组没有意义。 【答案】D 【考纲知识点】 数组 【解析】本题属于考察计算机数组知识。世界可以用多维描述,定义四维也有意义。 6、下列关于C++语⾔中函数的叙述 ,正确的是( )。 A.函数调用前必须定义。 B.函数调用时必须提供足够的实际参数。 C.函数定义前必须声明。 D.函数声明只能写在函数调用前。 【答案】B 【考纲知识点】 函数的概念及使用 【解析】本题属于考察计算机函数知识。函数调用时如果缺少实参将不能正确运行。 7、下列关于C++语⾔中函数的叙述 ,不正确的是( )。 A.两个函数的声明可以相同。 B.两个函数的局部变量可以重名。 C.两个函数的参数可以重名。 D.两个函数可以重名。 【答案】A 【考纲知识点】 函数的概念及使用 【解析】本题属于考察计算机函数知识。函数声明时不能相同。 8、⼀个二维数组定义为 char array[3][10]; ,则这个二维数组占用内存的大⼩为( )。 A. 10 B. 30 C. 32 D. 48 【答案】B 【考纲知识点】 二维数组知识 【解析】本题属于考察C++二维字符数组知识。内存大小和数组需要用的空间有关。3行10列,需要3*10=30个空间,选B。 9、如果n为int类型的变量,⼀个指针变量定义为int *p=&n; ,则下列说法正确的是( )。 A.指针变量p的值与变量n是相同 B.指针变量p的值与变量n的地址是相同的。 C.指针变量p指向的值为 'n'。 D.指针变量p指向的值与变量n的地址是相同的。 【答案】B 【考纲知识点】 指针 【解析】本题属于考察C++指针知识。指针的值保存的是变量的地址,所以选B。 10、⼀个三维数组定义为 long long array[6][6][6]; ,则array[1][2][3]和array[3][2][1]在内存中的 位置相差多少字节?( ) A. 70字节 B. 198字节 C. 560字节 D.无法确定 【答案】C 【考纲知识点】 三维数组 【解析】本题属于考察C++三维数组知识。数组是long long类型,每间隔一下数字就间隔8个字节,假设三维数组用长宽高来描述,array[0][0][0]到array[0][5][5]有36个元素,array[1][2][3]包含36+12+4=52个元素;到长度3宽度2高度1,包括36*3+12+2=122个元素,隔离70个元素,因此长度是560,选C。 11、如果 a 为 int 类型的变量,且 a 的值为6,则执⾏a = ~a; 之后,a的值会是( )。 A. -6 B. 6 C. -7 D. 7 【答案】C 【考纲知识点】 位运算 【解析】本题属于考察C++位运算知识。6按位取反运算,注意符号位也取反,呈现的是补码,转换过来就是-7。具体过程:00000110(取反操作)11111001(补码)11111000(补码-1=反码)10000111(负数的原码,注意此时取反符号位不变) 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} 【答案】A 【考纲知识点】 指针和数组 【解析】本题属于考察C++指针和数组知识。P指针指向的是a[2],将a[1]的值赋值给p指向的变量a[2],数组中a[1]将等于a[2]。 13、下列关于C++语言中异常处理的叙述,正确的是()。 A.⼀个try⼦句可以有多个catch⼦句与之对应。 B.如果try⼦句在执⾏时发⽣异常 ,就⼀定会进⼊某⼀个catch⼦句执⾏。 C.如果try⼦句中没有可能发⽣异常的语句 ,会产⽣编译错误。 D. catch ⼦句处理异常后 ,会重新执⾏与之对应的try⼦句。 【答案】A 【考纲知识点】 异常处理 【解析】本题属于考察C++处理异常知识。A是正确的。B选项中,得到对应类型中的异常才能catch操作。 14、执⾏以下C++语⾔程序后,输出结果是( )。 #include<iostream>
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. ⽆法确定。 【答案】D 【考纲知识点】 循环和一维数组的基本运用 【解析】本题属于考察C++循环结构和一维数组的知识。这是求斐波那契数列的代码,数组的范围是[0,9],所以对fib[10]操作后,越界访问结果无法确定。 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++ 【答案】C 【考纲知识点】 函数和数组的知识 【解析】本题属于考察C++函数和数组的知识。题目已知,要求从小到大的冒泡排序,如果前一个比后一个大,就交换位置,外层循环从n开始,判断的区间逐渐减小,判断循环范围C正确。
(责任编辑:admin) |