21秋学期(1709、1803、1809、1903、1909、2003、2009、2103、2109)《程序设计基础(下)》在线作业
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.在C++中,要实现动态联编,可以使用( )调用虚函数。
A.类名
B.派生类指针
C.对象名
D.基类指针
2.在一个具有n个顶点的有向图中,若所有顶点的入度之和为s,则所有顶点的度之和为( )。
A.s
B.s+1
C.s-1
D.2s
3.下面程序段中,说法正确的是( ) class location{ public : int GetX(); }; class rectangle:private location { public: int GetW(); };
A.类rectangle的私有派生类是location
B.类rectangle中的public成员在类 location中是私有的
C.类location中的public成员在类 rectangle中是不可访问的
D.viod f( ) { Rectangle r; int X=r .GetX( ); } 其中int X = r .GetX( );是非法语句
4.进行文件操作时需要包含_ ()头文件。
A.iostream
B.fstream
C.stdio
D.stdlib
5.在存储数据时,通常不仅要存储各数据元素的值,而且还要存储()。
A.数据的处理方法
B.数据元素的类型
C.数据元素之间的关系
D.数据的存储方法
6.在一个链接队列中,假设f和r 分别是队头和队尾指针,则插入一个s结点的运算时( )。
A.f->next=s; f=s;
B.r->next=s; r=s;
C.s->next=r; r=s;
D.s->next=f; f=s;
7.在含n个顶点和e条边的无向图的邻接矩阵中,零元素的个数为( )。
A.e
B.2e
C.n的平方减e
D.n的平方2减2e
8.多态调用是指( )。
A.以任何方式调用一个虚函数
B.以任何方式调用一个纯虚函数
C.借助于指向对象的基类指针或引用调用一个虚函数
D.借助于指向对象的基类指针或引用调用一个纯虚函数
9.友元运算符obj1>obj2被C++编译器解释为()。
A.operator>(obj1,obj2)
B.>(obj1,obj2)
C.jobj2.operator>(obj1)
D.obj1.operator(obj2)
10.下列描述中,()是抽象类的特性。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
11.若类A和类B的定义如下: class A { int i,j; public: void get(); }; class B:A//默认为私有派生 { int k; public; void make(); }; void B:: make() { k=i*j; } 则上述定义中,()是非法的表达式。
A.void get();
B.int k;
C.void make();
D.k=i*j;
12.设无向图G中的边集E={(a,b),(a,c),(c,d),(c,e) },则从顶点a出发可以得到一种深度优先遍历的顶点序列为( )。
A.abced
B.acbed
C.acebd
D.acdbe
13.一个类的友元函数能够访问该类的( )。
A.私有成员
B.保护成员
C.公有成员
D.所有成员
14.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,一个派生类可以有多个基类
奥鹏作业答案请进open5.net或请联系QQ/微信:18866732
15.下面叙述错误的是( )。
A.派生类可以使用private派生
B.对基类成员的访问必须是无二义性的
C.基类成员的访问能力在派生类中维持不变
D.赋值兼容规则也适用于多继承的组合
16.在二叉树的第i层上至多有( )个结点(i≥1)。
A.2的i次方减1
B.2的i-1次方
C.2的i次方加+1
D.2的i+1次方
17.关于函数模板,描述错误的是( )。
A.函数模板必须由程序员实例化为可执行的函数模板
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板
18.当使用ifstream流类定义一个流对象并打开一个磁盘文件时,文件的隐含打开方式为( )。
A.ios::in
B.ios::out
C.ios::trunk
D.ios::binary
19.在一个长度为n(n>1)的单链表上,设有两个指针分别指向链表的第一个元素和最后一个元素,执行( )操作与链表的长度有关。
A.删除单链表中的第一个元素
B.删除单链表的最后一个元素
C.在单链表的第一个元素前插入一个新元素
D.在单链表的最后一个元素后插入一个新元素
20.设a,b为一棵二叉树上的两个结点,在中序遍历中,a 在b 前面的条件是( )。
A.a在b的右方
B.a在b的左方
C.a是b的祖先
D.a是b的子孙
二、多选题 (共 15 道试题,共 30 分)
21.不论派生类以何种方法继承基类,都可以使用基类的( )。
A.public成员
B.private成员
C.protected成员
D.所有成员
22.下列关于拷贝构造函数的说法中,正确的是( )。
A.拷贝构造函数是一个特殊的构造函数
B.一个类中只能有一个拷贝构造函数
C.如果定义一个类时没有定义拷贝构造函数,则系统会提供一个默认的不包含任何操作的拷贝构造函数
D.当一个类中有指针类型的成员变量时,则需要为这个类定义拷贝构造函数
23.下面描述中,正确的是( )。
A.虚拟继承可以解决多重继承中的二义性问题
B.类层次中的类从虚基类中直接继承虚基类的成员
C.在有虚基类的类层次中,创建派生类对象时,会先调用基类的构造函数再调用虚基类的构造函数
D.在有虚基类的类层次中,销毁派生类对象时析构函数的调用顺序与创建派生类对象时构造函数的调用顺序相反
24.系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。
A.当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放
B.当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确
C.如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题
D.如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题
25.下列关于类的常量数据成员的说法中,正确的是( )。
A.常量数据成员只能是公有成员
B.可以在构造函数的初始化列表中为常量数据成员赋初值
C.可以在构造函数的函数体中为常量数据成员赋初值
D.常量数据成员的值初始化后就只能访问、无法修改
26.已知in是ifstream对象,则下列语句正确的是( )。
A.in.seekg(5);
B.in.seekg(5, ios::beg);
C.in.seekg(5, ios::end);
D.in.seekg(-5);
27.下面对对象成员的正确描述是( )。
A.可以在构造函数的初始化列表中给出对象成员的初始化
B.可以在构造函数的函数体中给出对象成员的初始化
C.如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
D.若A类中有B类对象成员,则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
28.下面描述中,正确的是( )。
A.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序相反
B.多重继承中,派生类对象被销毁时析构函数的调用顺序与派生类对象创建时构造函数的调用顺序一致
C.多重继承中创建派生类对象时各基类构造函数的调用顺序与基类构造函数在初始化列表中的出现顺序一致
D.多重继承中,如果派生类的初始化列表中没有某个基类构造函数的调用语句,则表示调用该基类的无参构造函数
29.下面关于自定义类的运算符重载的说法中,正确的是( )。
A.C++中的所有运算符都可以重载
B.不仅可以重载C++中已有的运算符,还可以创建新的运算符
C.运算符重载实质上就是函数重载
D.运算符重载的函数名是operator
30.关于类和对象正确的说法包括( )。
A.类是一种类型,它封装了数据和操作
B.对象是类的实例
C.一个类的对象只有一个
D.一个对象必属于某个类
31.对象的核心概念就是通常所说的()。
A.继承
B.封装
C.传递
D.多态
32.下面描述中,错误的是( )。
A.虚函数是没有实现的函数
B.纯虚函数是没有实现的函数
C.抽象类可以用于创建对象
D.抽象类指针可以指向不同的派生类
33.下列关于类模板的描述中,正确的是( )。
A.类模板的模板形参表中既可以有类型形参也可以有普通形参
B.类模板的成员函数中可以用类型形参定义局部变量
C.类模板中可以用类型形参声明成员变量
D.类模板只能在类体中给出成员函数的实现
34.关于this指针的说法错误的是( )。
A.this指针必须显示说明
B.静态成员函数拥有this指针
C.成员函数拥有this指针
D.静态成员函数不拥有this指针
35.已知类Circle中有一个静态数据成员s_nNum,且有变量定义语句Circle c, *pc;,则下列选项中,能给s_nNum赋值为3的语句包括( )。
A.Circle.s_nNum=3
B.Circle::s_nNum=3
C.s_nNum=3
D.pc->s_nNum=3
三、判断题 (共 15 道试题,共 30 分)
36.对象成员的访问与结构变量成员的访问相同,使用运算符.或->。
37.在一个类中最多只能定义1个构造函数和1个析构函数。
38.函数模板可以与普通函数重载。
39.用邻接矩阵存储一个图时,边数越多,占用的存储空间越大。
40.顺序存储结构说的是数据的逻辑结构。
41.多继承情况下,派生类的构造函数中基类构造函数的执行顺序取决于定义派生类时所指定的各基类的顺序。
42.继承性是指同样的消息被不同对象接收时可产生不同的行为。
43.线性表的链式存储结构是可以用不连续的的存储单元来存储线性表中的数据元素。
44.树的根结点所在的层为第1层,其余结点的层等于其前驱结点的层加1;树中各结点的层的最大值称为树的深度。
45.链表的每个结点既可以存储一个基本数据类型的元素也可以存储一个自定义数据类型的元素。
46.类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。
47.入对操作,在顺序存储结构上需要考虑“溢出”情况。
48.构造函数说明为纯虚函数是没有意义的。
49.顺序表能够存放的最大元素数量n称为线性表的长度。
50.邻接链表可以存储有向图和无向图,而邻接矩阵也可以存储无向图和无向
转载请注明:奥鹏作业之家 » 【奥鹏】南开21秋学期《程序设计基础(下)》在线作业