参考:https://mp.weixin.qq.com/s/vxIpiii396KSCbZrN2cBYg
1、32位int类型的存储范围是( )?
A、-2147483647 ~ +2147483647
B、-2147483647 ~ +2147483648
C、-2147483648 ~ +2147483647
D、-2147483648 ~ +2147483648
解析:本题为基础知识题。int整型的数据在C++中用4个字节存储,即是个4 * 8 = 32位二进制数。默认的int规定第一位是符号位,后面31位是值。因此其取值范围是图片,即-2147483648 ~ +2147483647(至于为什么负数比正数多1,涉及到计算机对负数进行补码存储的相关知识)。
如果类型是unsigned int无符号整型,那么32位都表示整数,其取值返回就变成图片,即0~4294967295。
2、计算 图片的结果,并选择答案的十进制值( )。
A、13
B、14
C、15
D、16
解析:考察进制转换的知识。原式 = (12 – 10) * 13 – 13 = 13。
3、某公司有10名员工,分为3个部门:A部门有4名员工、B部门有3名员工、C部门有3名员工。先需要从这10名员工中选出4名组成一个工作小组,且每个部门至少要有1人。问有多少种选择方式( )?
A、120
B、126
C、132
D、238
解析:可以分2批来选择:第1批员工从每个部门里出1名,共有3 * 3 * 4 = 36种选择;第2批员工从所有人中再选1名,有7种选择。第2批选择的员工可能会在之前的方案中被选进第1批,因此最终方案数要除以2,有36 * 7 / 2 = 126种。
4、以下哪个序列对应数字0至8的4位二进制格雷码(Gray Code)( )?
A、0000,0001,0011,0010,0110,0111,0101,1000
B、0000,0001,0011,0010,0110,0111,0100,0101
C、0000,0001,0011,0010,0100,0101,0111,0110
D、0000,0001,0011,0010,0110,0111,0101,0100
解析:格雷码是一组数的编码,其中任意两个相邻的二进制数只有1位二进制位不同。根据这个特征可以使用排除法排除掉错误选项。
想要去构造格雷码,可以根据以下规则手动构造:
1、0对应的格雷码为0;
2、将最后一位翻转,获得下一个格雷码;
3、将最右边的1的左边一位翻转,获得下一个格雷码;
4、重复上述的2和3过程,交替生成若干次,就可以获得格雷码序列。
以题目中的4位二进制格雷码为例,格雷码和普通编码对比表如下:
图片
5、记1KB为1024字节(Byte),1MB为1024KB,那么1MB是多少二进制位(bit)?( )
A、1000000
B、1048576
C、8000000
D、8388608
解析:本题为基础知识题。存储单位的转换规则如下:
1 B = 8 bit
1KB = 1024 B
1MB = 1024 KB
因此,1 MB = 1 * 1024 * 1024 * 8 = 8388608 bit。
6、以下哪个不是C++中的基本数据类型?
A、int
B、float
C、struct
D、char
解析:C++的基本数据类型有:整型(包括int、short、long等)、浮点型(包括float、double等)、布尔型(bool)、字符型(char)和指针类型等。
枚举型(enum)、数组、结构体(struct)、联合体(union)等属于C++的高级数据类型。
7、以下哪个不是C++中的循环语句( )?
A、for
B、while
C、do-while
D、repeat-until
解析:本题为C++基础知识题,循环结构的相关知识可以去查看赵码匠之前的文章【循环结构(1)】、【循环结构(2)】。repeat-until是pascal语言的循环语句。
8、在C/C++中,(char)(‘a’+13)与下面哪一个值相等( )?
A、’m’
B、’n’
C、’z’
D、‘i’
解析:本题考察字符型和ASCII码的知识。C/C++中的字符型数据是按照ASCII码的顺序编码的,因此本题就是从a开始往后数13个字母,即n。
又或者可以先将’a’转换为ASCII码值,即97,再加上13后恢复为字符,也是‘n’。
9、假设有序表中有1000个元素,则用二分法查找元素X最多需要比较( )次。?
A、25
B、10
C、7
D、1
解析:使用二分法在n个元素中找到数字x,其最多比较次数为 图片。
10、下面哪一个不是操作系统的名字( )?
A、Notepad
B、Linux
C、Windows
D、macOS
解析:考察计算机基础知识。常见的操作系统有Windows、Linux、Unix、Android、iOS、macOS、HarmonyOS(鸿蒙)等。Notepad就是记事本,是windows操作系统中的程序。
11、在无向图中,所有顶点的度数之和等于( )?
A、图的边数
B、图的边数的两倍
C、图的顶点数
D、图的顶点数的两倍
解析:在图结构中,边没有方向的图被称为无向图,顶点的度指的是每个顶点与其相关联的边的条数。以下面的无向图为例,每个顶点都与两条边有关,因此每个顶点的度为2,总度数之和为6。因此无向图中,所有顶点的度数之和为图边数的两倍。
图片
12、已知二叉树的前序遍历为[A,B,D,E,C,F,G],中序遍历为[D,B,E,A,F,C,G],请问该二叉树的后序遍历结果是( )?
A、[D,E,B,F,G,C,A]
B、[D,E,B,F,G,A,C]
C、[D,B,E,F,G,C,A]
D、[D,B,E,F,G,A,C](该选项为考场修改后)
解析:本题考察二叉树的遍历知识。二叉树的遍历是指从根节点出发,按照某个顺序依次访问二叉树中的所有结点,主要分为三种方式:前(先)序遍历、中序遍历和后序遍历。
前序遍历的规则是先访问根节点,然后前序遍历左子树,然后前序遍历右子树;
中序遍历的规则是先中序遍历左子树,再访问根节点,最后中序遍历右子树;
后序遍历的规则是先后序遍历左子树,再后序遍历右子树,最后访问根节点。
根据规则与题目给出的结果,分析树的结构:
(1)根据前序遍历可知,A为根节点;
(2)再根据中序遍历与上面的结果,可知[D,B,E]为根节点的左子树,[F,C,G]为根节点的右子树;
(3)再分别对左右子树,进行上述2步的分析。最终画出的树结构图如下:
图片
对该树进行后序遍历的结果为[D,E,B,F,G,C,A]。
13、给定一个空栈,支持入栈和出栈操作,若入栈操作的元素依次是1 2 3 4 5 6,其中1最先入栈,6最后入栈,下面哪种出栈顺序是不可能的( )?
A、6 5 4 3 2 1
B、1 6 5 4 3 2
C、2 4 6 5 3 1
D、1 3 5 2 4 6
解析:栈是一种先进后出的数据结构,本题直接模拟每个选项的入栈与出栈情况即可。
选项A:先入栈1 2 3 4 5 6,再依次出栈6 5 4 3 2 1;
选项B:先入栈1,出栈1,再入栈2 3 4 5 6,出栈6 5 4 3 2;
选项C:先入栈1 2,出栈2;再入栈3 4,出栈4;再入栈5 6,出栈6 5 3 1;
选项D;先入栈1,出栈1;再入栈2 3,出栈3;再入栈4 5,出栈5;接下来想要出栈2,但是2前面被4拦住了,因此选项D的出栈顺序不可能。
14、有5个男生和3个女生排成一排,规定3个女生必须相邻。问有多少种不同的排列方式( )?
A、4320种
B、5040种
C、3600种
D、2880种
解析:先使用“捆绑法”将3名女生看做1个人进行排列,5名男生 + 1个人的排列方式有6!(!为阶乘运算,6!= 6*5*4*3*2*1)种,3名女生内部的排列方式有3!种。根据乘法原则,一共有6!*3!=4320种。
15、编译器的主要作用是什么( )?
A、直接执行源代码
B、将源代码转换为机器代码
C、进行代码调试
D、管理程序运行时的内存
解析:C++编译器是将C++源代码转换为可执行程序的程序,编译过程主要包括4个部分:
(1)预处理器:处理#开头的代码,将需要的库插入到源代码,并处理编写的宏定义语句等;
(2)编译器:进行语法检查,如果语法没有问题,则将源代码翻译成汇编语言;
(3)汇编器:将汇编语言再翻译为机器语言代码,并将这些代码打包为可以重定位的目标文件;
(4)链接器:将所有的目标文件和必须的库一起打包链接生成可执行文件。
编译器在进行编译时还会对代码进行优化,使得生成的机器代码运行速度更快,占用内存更少,并在发现错误时生成提示和警告。
图片