第 1 题
已知小写字母 b 的 ASCII 码为 98 ,下列 C++ 代码的输出结果是(B)。#include <iostream> using namespace std; int main() {char a = 'b';a++;cout << a;return 0; }
A. bB. cC. 98D. 99【这题很简单,我们只需要在编译器中敲入代码运行并查看结果就行,简直是送分:我们发现输出"c",故答案选B】
第 2 题
已知 a 为 int 类型变量,下列表达式不符合语法的是(D)。A. &a + 3B. +a & 3C. a - - 4D. a++3【又是送分题,我们写入编译器编译后即可得知错误的选项:很显然,D选项是不可以的。系统将其误判为缺失分号,是因为系统理解为a++和3是不同的语句,需要两个分号来结束。】
第 3 题
下列关于 C++ 语言中指针的叙述,不正确的是(C)。A. 指针变量中存储的是内存地址。B. 指针变量指向的内存地址不一定能够合法访问。C. 结构类型中的指针成员不能指向该结构类型。D. 定义指针变量时必须指定其指向的类型。【结构体类型中的指针成员是可以指向该结构类型的,常见操作如链表:但是如果第5行Node后面不带有*号,就会编译错误:
第 4 题
下列关于C++类的说法 ,错误的是(C)。
A. 将C++类对象通过值传递给函数参数时 ,会⾃动调用复制构造函数。
B. 将⼀个类的对象赋值给该类的另⼀个对象时 ,不会⾃动调用构造函数。
C. 定义C++类对象时 ,⼀定会调用默认构造函数。
D. 构造派⽣类的对象时 ,⼀定会调用基类的构造函数。
【如果类中定义了其他构造函数(如有参数的构造函数)但没有定义默认构造函数,且在创建对象时没有提供初始化参数,则不会调用默认构造函数,甚至可能导致编译错误。
以上为官方的答案,如果你不能理解就看看我的例子:
class Test { private:int num; public:Test(int x) { // 构造函数num = x;} };
我定义了一个class,名字为Test,其中包含一个构造函数,但没有定义默认构造函数。
这个时候,如果我们定义一个Test类的变量,没有提供构造函数中的x,就会报错。
int main() {Test obj;return 0; }
看,出错了吧!】
第 5 题
某二叉树 T 的先序遍历序列为: {A B D C E G H F} ,中序遍历序列为: {D B A H G E C F} ,则下列说法中正确的是( A) 。A. T的⾼为5
B. T有4个叶节点
C. T是平衡树
D. 以上说法都不对
【
画出这棵树之后,我们发现它深度的确是5。】
第 6 题
⼀棵完全⼆叉树有431个结点 ,则叶结点有多少个?(C)
A. 176
B. 215
C. 216
D. 255
【完全二叉树中:节点的个数为n0(度数为0叶子节点) + n1(度数为1的节点) + n2(度数为2的节点)。n1的个数一定是0或者1,n0 = n2 + 1,所以总结点个数 = 2 * n2 + 1 + (0或者1),其中2 * n2 + 1一定是奇数,一个奇数加上一个偶数才是奇数,所以在此n1是0,431 = 2 * n2 + 1,2 * n2 = 430,n2 = 215,n0 = 216】
第 7 题
下列关于树的说法 ,错误的是(A)。
A.⼆叉树的中序遍历与其深度优先遍历总是相同的。
B.所有树都可以构造⼀颗⼆叉树与之⼀⼀对应。
C.如果树的⼀个叶结点有两个不同的祖先结点 ,那么其中⼀个⼀定是另⼀个的祖先结点。
D.树的结点不能有两个父结点。
【深度优先搜索是一个更广泛概念,包括三种不同的遍历方式:前序遍历、中序遍历、后序遍历,虽然中序遍 历是深度优先搜索的一种形式,所以不能说二叉树的中序遍与其深度优先搜索遍历总是相同的。】
第 8 题
⼀个简单无向图有10个结点、30条边 。再增加多少条边可以成为完全图 。(B)
A. 10
B. 15
C. 51
D. 60
【无向完全图需要n(n - 1) / 2条边,详见图的基本定义、构成与遍历-CSDN博客。
10 * 9 / 2 = 45
45 - 30 = 15】
第 9 题
以下哪个方案可以合理解决或缓解哈希表冲突(D)。
A.丢弃发⽣冲突的新元素。
B.用新元素覆盖发⽣冲突的元素。
C.用新元素覆盖在冲突位置的下⼀个位置。
D.将新元素放置在冲突位置之后的第⼀个空位。
【A你想想,用户给你上传数据可以丢掉吗?
B这样子不还是会丢掉数据吗?
C万一下一个还是有数据了呢?
D正解】
第 10 题
⼀个迷宫,已知从起点不经过重复结点到达终点的路径有且仅有⼀条,则下面说法错误的是(D)。
A.可以使用深度优先搜索找到这条路径。
B.可以使用⼴度优先搜索找到这条路径。
C.该迷宫内与起点连通的结点 ,⼀定也与终点连通。
D.该迷宫内与起点连通的结点及它们之间的路径可以抽象为无向无环图。
【AB当然对了。
C当有一个节点与起点连通,那它就可以经过起点到达终点
D还是可能存在环
】
第 11 题
下面程序的输出为(A)。
#include <iostream> #include <cmath> using namespace std;int main() {cout << (int)log(8) << endl;return 0; }
A. 2
B. 3
C. 8
D.无法通过编译。
【
】
第 12 题
下面程序的输出为(C)。
#include <iostream> #define N 10 using namespace std; int path[N][N]; int main() {for (int i = 1; i < N; i++)path[i][0] = i;for (int j = 1; j < N; j++)path[0][j] = j;for (int i = 1; i < N; i++)for (int j = 1; j < N; j++)path[i][j] = path[i - 1][j] + path[i][j - 1];cout << path[8][4] << endl;return 0; }
A. 84
B. 495
C. 1012
D.结果是随机的。
【D我咋不信呢?
】
第 13 题
上题中程序的时间复杂度为()。
A. O(1)
B. O(N)
C. O(NlogN)
D. O(N^2)
【代码的核心部分是一个双重循环,每个循环从1~n,所以时间复杂度为O(N^2)】
第 14 题
下⾯ fib 函数的时间复杂度为(B)。
【(官方)】
第 15 题
下列选项中 ,哪个可能是下图的⼴度优先遍历序列(A)
A. 1, 3, 5, 7, 4, 2, 6, 8, 9
B. 9, 4, 2, 1, 3, 7, 5, 6, 8
C. 1, 3, 5, 7, 6, 8, 9, 4, 2
D. 9, 4, 7, 2, 1, 3, 5, 6, 8
【根据广度优先搜索的概念,从1个点出发,首先搜索所有与该点相邻的点,再进一步搜索相邻点的相邻点。 根据全面扩散,逐层递进,自己模拟即可】
参考文章:GESP官方解析
欢迎指出错误,哪怕打错字也请提出!