C++选择题题库
1.C++中,bool类型的变量占用字节数为 ()。
A.1    B.2    C.3    D.4   
【答案】A
【解析】(C++ 中 bool 类型与 char 类型一样,都需要1 byte。一些其他类型的占用字节数:short:2 byte。int:4 byte。long long:8 byte。double:8 byte。)
2.以下关于C++结构体的说法,正确的是 ()。
A.结构体中只能包含成员变量,不能包含成员函数
B.结构体不能从另一个结构体继承
C.结构体里面可以包含静态成员变量
D.结构体里面不能包含构造函数
【答案】C
【解析】(A中结构体中可以定义成员变量,也可以定义只有该结构体类型变量可调用的成员函数  B中 所谓结构体的继承特性,指的是在一个已经定义好的旧结构体的基础上,创建一个新结构体,并且新结构体可以复用旧结构体的成员和函数。C正确,D中构造函数可以在创建结构体变量时,按照函数预设的构造规则,将对应成员变量赋值,并执行其他操作。构造函数在创建结构体类型的对象时自动执行,因此无法由用户主动调用,也没有返回值。)
3.设只含根结点的二叉树高度为1,共有62个结点的完全二叉树的高度为
A.4    B.5    C.6    D.7
【答案】B
【解析】完全二叉树指的是结点从上至下,每层从左至右依次铺开的二叉树。一个含有 6 个结点的完全二叉树
如果完全二叉树的最后一层恰好填满,则称作满二叉树。由等比数列的求和可知:一个高度
为 h 的满二叉树含有 2h−1 个结点。本题的 62 个结点,相当于高度为6 的满二叉树的 26 −1 = 63个结点中,再去掉最底层最右端的一个结点。
4.以下关于数组的说法,不正确的是 () 。
A.数组中所有元素的类型必须都相同
B.数组中各元素在内存中是顺序存放的
C.数组最后一个元素的索引是数组的长度
D.数组名的第一个字符可以是下划线
union是什么类型
【答案】C
【解析】以 int a[100]; 为例,最后一个元素为 a[99],下标索引 99 为数组长度减 1。
5.在C++中,下面哪个关键字用于声明一个变量,其值不能被修改?( )。
A. unsigned
B.const
C.static
D.mutable
【答案】B
【解析】在C++中,关键字const用于声明一个变量,表示其值是常量,不能被修改。一旦用const声明一个变量后,它的值在声明之后就不能再被修改,任何试图修改该变量的操作都会被编译器报错。其中 A 选项为无符号性 B 为定义常亮 (不可修改)C 为静态变量 D 为可修改变量和 const
6. 八进制数12345670(8) 和07654321(8)的和为( )。
A. 22222221(8)
B. 21111111(8)
C. 22111111(8)
D.22222211(8)
【答案】D
【解析】直接算。笨方法是首先将八进制数转换为十进制数,然后将两个十进制数相加,最后将结果转换回八进制数。
7. 阅读下述代码,请问修改data的value成员以存储3.14,正确的方式是( )。
A. data.value = 3.14;
B. value.data = 3.14;
C. data->value = 3.14;
D. value->data = 3.14;
【答案】A
【解析】Union 为联合体,和 struct 类似,赋值应用.运算符,指针才能用->运算符
8.假设有一个链表的节点定义如下:
现在有一个指向链表头部的指针:Node* head。如果想要在链表中插入一个新节点,其成员data的值为42,并使新节点成为链表的第一个节点,下面哪个操作是正确的?( )
A.Node* newNode = new Node; newNode->data = 42; newNode->next = head; head = newNode;
B.Node* newNode = new Node; head->data = 42; newNode->next = head; head = newNode;