咨询请添加 QQ:3064302332
微信:wxxygzs
南开程序设计基础(下)24秋学期(高起本:1809-2103、专升本高起专:2103)《程序设计基础(下)》在线作业答案
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.有关析构函数的说法不正确的是( * )。
A.析构函数有且仅有一个
B.析构函数和构造函数一样可以有形参
C.析构函数的功能是用来释放一个对象
D.析构函数无任何函数类型
2.利用数组a[N]顺序存储一个栈时,用top表示栈顶指针,用top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作是( * )。
A.top--; a[top]=x;
B.a[top]=x; top--;
C.top++; a[top]=x;
D.a[top]=x; top++;
3.从一个结点到其后继结点之间的连线称为一个分支;从一个结点X到另一个结点Y所经历的所有分支构成结点X到结点Y( * )。
A.路径长度
B.分支
C.路径
D.树的路径长度
4.在长度为n的单链表中查找某给定值x时,最少查找( * )次就可找到。
A.1
B.n
C.n的平方
D.n/2
5.在下列选项中( * )不是ostream类的对象。青书学堂 学习通 学起 柠檬文才学堂 作业答案
A.cin
B.cerr
C.clog
D.cout
6.若派生类中没有对基类的虚函数进行重定义,则它继承基类中的( * )。
A.访问权限
B.保护成员
C.虚函数
D.成员函数
7.关于动态关联的下列叙述中,()是错误的。
A.动态关联是以虚函数为基础的
B.动态关联调用虚函数操作是指向对象的指针或引用
C.动态关联是在运行时确定所调用的函数代码的
D.动态关联是在编译时确定操作函数的
8.下面关于对象概念的描述中,( * )是错误的。
A.对象就是C语言中的结构变量
B.对象代表着正在创建的系统中的一个实体
C.对象是一个状态和操作(或方法)的封装体
D.对象之间的信息传递是通过消息进行的
10.假设有函数模板定义如下: Template Max(T a, T b, T &c) { c=a+b; } 下列选项正确的是( * )。
A.float x,y,z; Max(x,y,z);
B.const int x,y,z; Max(x,y,z);
C.int x,y; float z; Max(x,y,z);
D.float x; int y, z; Max(x,y,z);
10.已知X类.则当程序执行到语句X *array=new X[2];时,调用了( * )次构造函数。
A.0
B.1
C.2
D.3
11.若让元素1,2,3依次进栈,则出栈次序不可能出现( * )的情况。
A.3,2,1
B.2,1,3
C.1,3,2
D.3,1,2
12.( * )的功能是对对象进行初始化。
A.析构函数
B.数据成员
C.构造函数
D.静态数据成员
13.下列描述中,()是抽象类的特性。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
14.已知一棵二叉树的先序遍历序列为ABCDEFG,中序遍历序列为CBDAFEG,则该二叉树的后序遍历序列是( * )。
A.CDBFGEA
B.CDFGBEA
C.CDBAFGE
D.CDBFEGA
15.类模板的模板参数( * )。
A.只可作为数据成员的类型
B.只可作为成员函数的返回类型
C.只可作为成员函数的参数类型
D.以上三者皆可
16.下面说法中正确的是( * )。
A.当声明的内容不同时,声明同一个名字的两个类是允许的
B.不完全声明的类也可以实例化
C.声明同一个名字的两个类时,要求声明的内容也相同
D.声明同一个名字的两个类是错误的
17.关于虚函数,下列表述正确的是( * )。
A.如果在重定义虚函数时使用virtual,则该重定义函数仍然是虚函数
B.虚函数不得声明为静态函数
C.虚函数不得声明为另一个类的友元函数
D.派生类必须重新定义基类的虚函数
18.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( * )。
A.250
B.500
C.254
D.501
19.下列类中( * )是输入/输出流类iostream的派生类。
A.fstream
B.ofstream
C.ifstream
D.ostream
20.this指针是C++实现( * )的一种机制。
A.抽象
B.封装
C.继承
D.重载
二、多选题 (共 15 道试题,共 30 分)
21.下列关于拷贝构造函数的说法中,错误的是( * )。
A.拷贝构造函数是可以重载
B.用一个对象给另一个对象赋值时,拷贝构造函数会被自动调用
C.用一个对象初始化另一个对象时,拷贝构造函数会被自动调用
D.创建一个对象时,有可能同时调用拷贝构造函数和其他构造函数
33.类成员的访问控制方式包括( * )。
A.public
B.private
C.protected
D.friend
23.下面属于析构函数特征的是( * )。
A.析构函数可以重载
B.对象销毁前会自动调用析构函数
C.如果定义一个类时没有定义析构函数,则系统会提供一个默认析构函数~(){}
D.析构函数的函数类型为void
24.下列描述中,正确的是( * )。
A.派生类构造函数主要是对派生类新定义的成员变量进行初始化
B.派生类从基类继承的成员变量的初始化通过基类构造函数完成
C.派生类对象被销毁时会先调用基类析构函数
D.派生类对象被销毁时会先调用派生类析构函数
25.下列说法正确的是( * )。
A.面向对象方法的基本观点是一切系统都是由对象构成的
B.面向对象方法的基本观点是一切系统都是由模块构成的
C.面向对象方法中通过“消息”来触发行为
D.面向对象方法中用类和对象来表示现实世界
26.关于类和对象正确的说法包括( * )。
A.类是一种类型,它封装了数据和操作
B.对象是类的实例
C.一个类的对象只有一个
D.一个对象必属于某个类
27.下面对构造函数的错误描述是( * )。
A.系统可以提供默认的构造函数
B.构造函数可以有参数,所以可以有返回值
C.构造函数不可以重载
D.构造函数可以设置默认参数
28.下列函数中,不可以作为虚函数的是()。
A.析构函数
B.成员函数
C.普通函数
D.构造函数
29.下面描述中,错误的是( * )。
A.虚函数是没有实现的函数
B.纯虚函数是没有实现的函数
C.抽象类可以用于创建对象
D.抽象类指针可以指向不同的派生类
30.下列说法中正确的是( * )。
A.成员函数的声明必须放在类体中
B.成员函数的声明可以放在类体中也可以放在类体外
C.成员函数的实现必须放在类体中
D.成员函数的实现可以放在类体中也可以放在类体外
31.假设A为抽象类,下列语句( * )是正确的。
A.A fun(int);
B.A *p;
C.int fun(A&);
D.A Obj;
32.关于函数模板,描述正确的是( * )。
A.函数模板必须由程序员实例化为可执行的函数模板
B.函数模板的实例化由编译器实现
C.一个类定义中,只要有一个函数模板,则这个类是类模板
D.类模板的成员函数都是函数模板,类模板实例化后,成员函数也随之实例化
33.不论派生类以何种方法继承基类,都可以使用基类的( * )。
A.public成员
B.private成员
C.protected成员
D.所有成员
34.下列关于类的常量成员函数的说法中,正确的是( * )。
A.只有类的成员函数可以在函数头后面加const关键字
B.在常量成员函数中可以获取成员变量的值、但不能修改
C.在常量成员函数中只能访问常量数据成员
D.在类体外定义常量成员函数时,函数头后面的const关键字可以省略
35.已知Derived是Base的公有派生类,且已定义两个对象Derived d;和Base b;,则下列语句中正确的是( * )。
A.d=b;
B.b=d
C.Derived *d=&b;
D.Base &b=d;
三、判断题 (共 15 道试题,共 30 分)
36.二叉树的第h层最多有2的h-1次方个结点。
37.C++语言中,既允许单继承,又允许多继承。
38.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
39.只有有向图才有连通分量,无向图没有。
40.已知Circle类对象c,Circle类中有一个setCenter成员函数,如果c.setCenter(...)返回值仍然是c,则setCenter函数中的return语句应写作return this;。
41.假定AB为一个类,则执行AB a(10);语句时,系统自动调用该类的构造函数的次数为10。
42.线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻。
43.线性表的逻辑顺序与物理顺序总是一致的。
44.继承性是指同样的消息被不同对象接收时可产生不同的行为。
45.对同一输入序列进行两次不同的合法的入栈和出栈操作,所得的输出序列也一定相同。
46.循环队列通常用指针来实现队列的头尾相接。
47.C++的I/O系统通过流的机制实现文件和控制台的输入输出操作。
45.图的一条路径中顶点的数目称为路径长度。
49.由于顺序表示非完全二叉树时空间利用率较低,因此,二叉树的顺序表示在实际中应用不多。
50.由于线性表的顺序结构可以进行随机读取,所以在插入新元素时,不需要移动其他元素。