20春学期(1709、1803、1809、1903、1909、2003)《程序设计基础(下)》在线作业
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.已知AA是一个类,则执行语句AA a;后( )。
A.自动调用有参构造函数
B.自动调用无参构造函数
C.自动调用拷贝构造函数
D.产生一个对象a,但不调用任何函数
2.可以用p.a的形式访问派生类对象p的基类成员a其中a是( )。
A.私有继承的公有成员
B.公有继承的私有成员
C.公有继承的公有成员
D.公有继承的保护成员
3.一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
A.类模板
B.模板类
C.模板函数
D.函数模板
4.对于一个具有n个顶点的无向图,若采用邻接链表表示,则存放表头结点的数组的大小为 ( )。
A.n-1
B.n+边数
C.n+1
D.n
5.将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数为( )。
A.n的平方
B.n
C.2n-1
D.2n
6.一个顺序表第一个元素的存储地址是100,每个元素的长度为4个字节,则第5个元素的地址是( )。
A.120
B.116
C.108
D.100
7.设线性表有n个元素,以下算法中,( )在顺序表上实现比在链表上实现效率更高。
A.顺序输出这n个元素的值
B.输出第i(0≤i≤n—1)个元素值
C.输出与给定值x相等的元素在线性表中的序号
D.交换第0个元素与第1个元素的值
8.已知一棵二叉树的先序遍历序列为AFCDGBE,中序遍历序列为CFDABGE,则该二叉树的后序遍历序列是( )。
A.CDFGBEA
B.CDFBEGA
C.CDBFEGA
D.CDBAFGE
9.关于类模板,描述错误的是( )。
A.类模板从普通类派生,也可以从类模板派生
B.根据建立对象时的实际数据类型,编译器把类模板实例化为模板类
C.函数的类模板参数须通过构造函数实例化
D.一个普通基类不能派生类模板
10.在数据结构中,与所使用的计算机无关的是数据的( )结构。
A.逻辑和存储
B.逻辑
C.物理
D.存储
11.在下述结论中,正确的是( )。
A.深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树
B.在树中,互为堂兄弟的结点拥有相同的双亲
C.二叉树的度为2
D.二叉树的左右子树可任意交换
12.C++有( )种联编方式。
A.4
B.3
C.2
D.1
13.如果以链表作为队列的存储结构,则出队操作时( )。
A.必须判别队列是否空
B.必须判别队列是否满
C.对队列不作任何判别
D.判别队列元素的类型
14.在一棵度为3的树中,度为3的结点个数为2,度为2 的结点个数为1,度为1的结点数为0,则度为0的结点个数为( )。
A.7
B.6
C.5
D.4
15.在树中,互为堂兄弟的结点拥有相同的( )。
A.路径
B.祖先
C.孩子
D.双亲
16.若让元素1,2,3依次进栈,则出栈次序不可能出现( )的情况。
A.3,2,1
B.3,1,2
C.2,1,3
D.1,3,2
17.下面( )的叙述不符合赋值兼容规则。
A.派生类的对象的地址可以赋值给指向基类的指针
B.派生类的对象可以赋值给基类的对象
C.派生类的对象可以初始化基类的对象
D.基类的对象可以赋值给派生类的对象
18.下面对构造函数的不正确描述是( )。
A.系统可以提供默认的构造函数
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数可以有参数,所以可以有返回值
19.下列( )不是构造函数的特征。
A.构造函数的函数名与类名相同
B.构造函数必须指定类型说明
C.构造函数可以重载
D.构造函数可以设置默认参数
20.在一棵完全二叉树中,根结点的编号为1,按照由上到下由左到右的顺序为二叉树结点编号。若编号为5的结点存在右孩子,则右孩子结点的编号为( )。
A.9
B.12
C.11
D.10
二、多选题 (共 15 道试题,共 30 分)
21.下列打开文件的语句中,能创建文件的选项包括( )。
A.ofstream f(“file.txt”, ios::out);
B.ofstream f(“file.txt”);
C.ifstream f(“file.txt”,ios::out);
D.fstream f(“file.txt”, ios::out);
22.下面描述中,正确的是( )。
A.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反
B.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致
C.多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数
D.多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致
23.下列说法中正确的是( )。
A.类体外定义的成员函数默认为公有成员函数
B.在类体外定义成员函数需要使用::运算符指明该成员函数属于哪个类
C.一个成员函数在类体外定义,则该成员函数默认是内联函数
D.一个成员函数在类体中定义,则该成员函数默认是内联函数
24.当用public继承从基类派生一个类时,基类的()成员可被派生类中的成员函数访问。
A.public
B.protected
C.private
D.friend
25.在C++中,不能被派生类继承的函数是( )。
A.析构函数
B.构造函数
C.拷贝构造函数
D.成员函数
26.下列关于类型兼容的描述中,正确的是( )。
A.无论是公有派生还是私有派生和保护派生,都具有类型兼容的特点
B.将派生类对象地址赋给基类指针后,使用基类指针可以直接访问派生类中定义的公有成员
C.将派生类对象地址赋给基类指针后,使用基类指针只能访问派生类从基类继承的公有成员
D.公有派生才具有类型兼容的特点
27.下列关于类的常量数据成员的说法中,正确的是( )。
A.使用const关键字可以将一个数据成员声明为常量数据成员
B.一个类的常量数据成员由该类的所有对象共享
C.一个类的常量数据成员必须在类体中初始化
D.一个类的常量数据成员对于该类的不同对象可以取不同的值
28.下面对构造函数的正确描述是( )。
A.系统可以提供默认的构造函数
B.构造函数可以重载
C.构造函数可以设置默认参数
D.构造函数可以有参数,所以可以有返回值
29.基类中的公有成员可能是派生类的( )。
A.友元成员
B.public成员
C.protected成员
D.private成员
30.下列关于类的继承描述中,( )是错误的。
A.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
B.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
C.派生类也是基类,但基类不一定具有派生类的全部属性和方法
D.一个基类可以有多个派生类,但一个派生类只能由一个基类
31.下列函数中,不可以作为虚函数的是()。
A.析构函数
B.构造函数
C.普通函数
D.成员函数
32.下列关于类的继承描述中,( )是正确的。
A.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
B.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
C.派生类也是基类,但基类不一定具有派生类的全部属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
33.下列成员中,不能被派生类继承的包括()。
A.析构函数
B.构造函数
C.公有成员
D.保护成员
34.当类的继承方式为公有继承时,基类的()成员的访问属性在派生类中不变
A.私有成员
B.友元成员
C.公有成员
D.保护成员
35.图的物理结构主要包括:
A.顺序表
B.邻接链表
C.邻接矩阵
D.邻接压缩表
三、判断题 (共 15 道试题,共 30 分)
36.虚函数是用virtual关键字说明的成员函数。
37.C++语言中模板分为函数模板和类模板两种。
38.在树中,一个结点的后继结点称为该结点的孩子,相应地,一个结点的前驱结点称为该结点的双亲。
39.多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
40.虚基类是用来解决多继承中公共基类在派生类中产生多份基类成员的问题。
41.线性表的逻辑顺序与物理顺序总是一致的。
42.一个类的构造函数中可以不包含对其子对象的初始化。
43.在图的一条路径中,若一个顶点至多只经过一次,则该路径称为简单路径。
44.某类中的友元类的所有成员函数可以存取或修改该类中的私有成员。
45.在线性表的顺序存储结构中,插入和删除操作时,元素移动次数与插入和删除元素的位置有关。
46.从现存类中构建其子类可以通过C++语言中的多态机制实现。
47.二叉树的第h层最多有2的h-1次方个结点。
48.栈是操作受限的线性表,只允许在表的一端进行元素插入操作、在另一端进行元素删除操作。
49.在用顺序表表示的循环队列中,可用表示队列元素数量的成员变量作为区分队空或队满的条件。
50.C++语言允许使用友元,但是友元会破坏封装性。