南开21秋学期《程序设计基础(下)》在线作业[答案]答案
21秋学期(1709、2103、2109、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.一个基类可以有多个派生类,一个派生类可以有多个基类
正确答案:-----
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.类模板的成员函数都是函数模板
正确答案:-----
21.当使用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的子孙
正确答案:-----
南开21秋学期《程序设计基础(下)》在线作业[答案]多选题答案
二、多选题 (共 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++中已有的运算符,还可以创建ABC运算符
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秋学期《程序设计基础(下)》在线作业[答案]历年参考题目如下:
21春学期(1709、1803、1809、1903、1909、2003、2009、2103)《程序设计基础(下)》在线作业
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行( )。
A.s->next=p;p->next=s;
B.s->next=p->next;p->next=s;
C.s->next=p->next;p=s;
D.p->next=s;s->next=p;
2.已知一个顺序存储的线性表,设每个结点需占m个存储单元,若第一个结点的地址为add1,则第I 个结点的地址为( )。
A.add1+(I-1)*m
B.add1+I*m
C.add1-I*m
D.add1+(I+1)*m
3.设线性表中有n个元素,( )操作,在单链表上实现要比在顺序表上实现效率更高。
A.删除所有值为x的元素
B.在最后一个元素的后面插入一个新元素
C.顺序输出前k个元素
D.交换第i个元素和第n-i-1个元素的值(i=1,1,…,n)
4.在数据结构中,从逻辑上可以把数据结构分成( )。
A.动态结构和静态结构
B.紧凑结构和非紧凑结构
C.线性结构和非线性结构
D.内部结构和外部结构
5.基类和派生类可以分别叫做( )。
A.“大类”和“小类”
B.“父类”和“子类”
C.“小类”和“大类”
D.“子类”和“父类”
6.在创建派生类对象时,构造函数的执行顺序是( )。
A.对象成员构造函数、基类构造函数、派生类本身的构造函数
B.派生类本身的构造函数、基类构造函数、对象成员构造函数
C.基类构造函数、派生类本身的构造函数、对象成员构造函数
D.基类构造函数、对象成员构造函数、派生类本身的构造函数
7.下面选项中,不是类的成员函数为( )。
A.构造函数
B.析构函数
C.友元函数
D.缺省参数的构造函数
8.建立类模板对象的实例化过程为( )。
A.基类->派生类
B.构造函数->对象
C.模板类->对象
D.模板类->模板函数
9.对虚函数的调用()。
A.一定使用动态联编
B.一定使用静态联编
C.必须使用动态联编
D.不一定使用动态联编
10.空类的声明( )是正确的。
A.class类名;
B.class类名{};
C.class类名{}
D.class类名
11.一个( )允许用户为类定义一种模式,使得类中的某些数据成员、某些成员函数的参数和返回值可以取任意数据类型。
A.函数模板
B.模板函数
C.类模板
D.模板类
12.在数据结构中,与所使用的计算机无关的是数据的( )结构。
A.逻辑
B.存储
C.逻辑和存储
D.物理
13.在C++中,打开一个文件就是将这个文件与一个()建立关联;关闭一个文件就是取消这种关联。
A.流
B.类
C.结构
D.对象
14.动态联编所支持的多态性是( )。
A.虚函数
B.继承
C.编译时的多态性
D.运行时的多态性
15.已知AA是一个类,则执行语句AA a;后( )。
A.自动调用无参构造函数
B.自动调用有参构造函数
C.自动调用拷贝构造函数
D.产生一个对象a,但不调用任何函数
16.如果以链表作为队列的存储结构,则出队操作时( )。
A.必须判别队列是否满
B.判别队列元素的类型
C.必须判别队列是否空
D.对队列不作任何判别
17.在一棵完全二叉树中,根结点的编号为1,按照由上到下由左到右的顺序为二叉树结点编号。若编号为5的结点存在右孩子,则右孩子结点的编号为( )。
A.9
B.10
C.11
D.12
18.关于对象成员的构造函数的调用顺序,说法正确的是( )。
A.与它们在成员初始化列表中给出的顺序相同
B.与析构函数的调用顺序相同
C.与它们在类中说明顺序相同
D.以上说法都不对
19.具有n个顶点的有向图最多有( )条边。
A.n
B.n(n+1)
C.n(n-1)
D.n的平方
20.下列描述中,()是抽象类的特性。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
二、多选题 (共 15 道试题,共 30 分)
21.假设A为抽象类,下列语句( )是错误的。
A.A fun(int);
B.A *p;
C.int fun(A);
D.A Obj;
22.在C++中,不能被派生类继承的函数是( )。
A.成员函数
B.构造函数
C.析构函数
D.拷贝构造函数
23.已知Derived是Base的公有派生类,且已定义两个对象Derived d;和Base b;,则下列语句中正确的是( )。
A.d=b;
B.b=d
C.Derived *d=&b;
D.Base &b=d;
24.对象的核心概念就是通常所说的()。
A.继承
B.封装
C.传递
D.多态
25.下列描述正确的是( )。
A.多态性是通过动态绑定实现的
B.多态性是通过静态绑定实现的
C.动态绑定是在程序执行时进行绑定
D.静态绑定是在程序执行时进行绑定