正确答案:D
22秋学期(高起本1709-2103、全层次2109-2103)《程序设计基础(下)》在线作业-00002
正确答案:A
试卷总分:100 得分:100
一、单选题 (共 20 道试题,共 40 分)
1.具有n个顶点的有向图最多有( )条边。
A.n
B.n(n+1)
C.n(n-1)
D.n的平方
正确答案:D
2.一棵完全二叉树上有1001个结点,其中叶子结点的个数是( )。
A.501
B.500
C.254
D.250
正确答案:A
3.假定MyClass为一个类,则该类的拷贝构造函数的声明语句为( )。
A.MyClass(MyClass x)
B.MyClass&(MyClass x)
C.MyClass(MyClass &x)
D.MyClass(MyClass *x)
正确答案:D
4.一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是( )。
正确答案:C
A.e d c b a
正确答案:A
B.d e c b a
正确答案:B
C.d c e a b
正确答案:B
D.a b c d e
正确答案:C
5.下列关于成员访问权限的描述中,不正确的是( )。
A.公有数据成员和公有成员函数都可以通过类对象直接访问
B.类的私有数据成员只能被公有成员函数以及该类的任何友元类或友元函数访问
C.保护成员在派生类中可以被访问,而私有成员不可以
D.类或派生类的成员函数可以访问保护成员
正确答案:A
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;
正确答案:D
7.对虚函数的调用()。
A.一定使用动态联编
B.一定使用静态联编
C.必须使用动态联编
D.不一定使用动态联编
正确答案:A
8.用于类中虚成员函数说明的关键字( )。
A.virtual
B.public
C.protected
D.private
正确答案:B
9.要求打开文件 d:file.dat,可写入数据,正确的语句是( )。
正确答案:B
A.ifstream infile("d:file.dat", ios::in);
正确答案:A
B.ifstream infile("d:file.dat", ios::in);
正确答案:D
C.ofstream infile("d:file.dat", ios::out);
正确答案:D
D.fstream infile("d:file.dat", ios::in| ios::out);
正确答案:B
10.在一个链接队列中,假设f和r 分别是队头和队尾指针,则删除一个结点的运算时( )。
A.r=f->next;
B.r=r->next;
C.f=f->next;
D.f=r->next;
正确答案:C
11.下列关于C++类的描述中错误的是( )。
A.类与类之间可以通过一些手段进行通信和联络
B.类用于描述事物的属性和对事物的操作
C.类与类之间必须是平等的关系,而不能组成层次关系
D.类与类之间可以通过封装而具有明确的独立性
正确答案:A
12.将含100个结点的完全二叉树从根这一层开始,每层从左至右依次对结点编号,根结点的编号为1。编号为47的结点X的双亲的编号为( )。
A.23
B.24
C.25
D.无法确定
正确答案:C
13.在二叉树中,若度为0的结点(即叶子结点)数为n0,度为2的结点数为n2,则( )。
A.n2-1
B.n2
C.n2+1
D.n2+2
正确答案:A
14.关于this指针的说法错误的是( )。
A.this指针必须显示说明
B.当创建一个对象后,this指针就指向该对象
C.成员函数拥有this指针
D.静态成员函数不拥有this指针
正确答案:C
正确答案:B
15.( )是析构函数的特征。
A.析构函数可以有一个或多个参数
B.析构函数定义只能在类体内
C.析构函数名与类名不同
D.一个类中只能定义一个析构函数
正确答案:C
16.下列说法中错误的是( )。
A.公有继承时基类中的public成员在派生类中是public的
B.公有继承时基类中的private成员在派生类中是不可访问的
C.私有继承时基类中的public成员在派生类中是private的
D.私有继承时基类中的public成员在派生类中是protected的
正确答案:D
17.( )只能访问静态成员变量,不能访问非静态成员变量。
A.静态函数
B.虚函数
C.构造函数
D.析构函数
正确答案:D
21.关于对象成员的构造函数的调用顺序,说法正确的是( )。
A.与它们在成员初始化列表中给出的顺序相同
B.与析构函数的调用顺序相同
C.与它们在类中说明顺序相同
D.以上说法都不对
正确答案:C
19.下面( )的叙述不符合赋值兼容规则。
A.派生类的对象可以赋值给基类的对象
B.基类的对象可以赋值给派生类的对象
C.派生类的对象可以初始化基类的对象
D.派生类的对象的地址可以赋值给指向基类的指针
正确答案:D
20.下列描述中,()是抽象类的特性。
A.可以说明虚函数
B.可以定义友元函数
C.可以进行构造函数重载
D.不能说明其对象
正确答案:A
南开22秋学期《程序设计基础(下)》在线作业[答案]多选题答案
正确答案:C
二、多选题 (共 15 道试题,共 30 分)21.下列描述正确的是( )。
A.多态性是通过动态绑定实现的
B.多态性是通过静态绑定实现的
C.动态绑定是在程序执行时进行绑定
D.静态绑定是在程序执行时进行绑定
正确答案:B
22.下面对构造函数的错误描述是( )。
A.系统可以提供默认的构造函数
B.构造函数可以有参数,所以可以有返回值
C.构造函数不可以重载
D.构造函数可以设置默认参数
正确答案:D
23.下面属于析构函数特征的是( )。
A.析构函数可以重载
B.对象销毁前会自动调用析构函数
C.如果定义一个类时没有定义析构函数,则系统会提供一个默认析构函数~(){}
D.析构函数的函数类型为void
正确答案:A
24.下面对对象成员的正确描述是( )。
A.可以在构造函数的初始化列表中给出对象成员的初始化
B.可以在构造函数的函数体中给出对象成员的初始化
C.如果一个对象成员有无参构造函数,则可以省略对象成员的初始化语句
D.若A类中有B类对象成员,则在创建A类对象时,先执行B类的构造函数,再执行A类的构造函数
正确答案:A
25.在派生类中可以直接访问基类的()。
A.公有成员
B.保护成员
C.私有成员
D.友元成员
正确答案:C
26.如果类A继承了类B,则类A称为()。
A.派生类
B.继承类
C.子类
D.父类
正确答案:A
正确答案:A
27.关于this指针的说法正确的是( )。
A.this指针必须显示说明
B.成员函数不拥有this指针
C.成员函数拥有this指针
D.静态成员函数不拥有this指针
28.下列说法正确的是( )。
A.面向对象方法的基本观点是一切系统都是由对象构成的
B.面向对象方法的基本观点是一切系统都是由模块构成的
C.面向对象方法中通过“消息”来触发行为
正确答案:B
D.面向对象方法中用类和对象来表示现实世界
正确答案:C
29.如果类A继承了类B,则类B称为()。
A.派生类
B.基类
C.子类
D.父类
30.下列说法中正确的是( )。
A.成员函数的声明必须放在类体中
B.成员函数的声明可以放在类体中也可以放在类体外
C.成员函数的实现必须放在类体中
D.成员函数的实现可以放在类体中也可以放在类体外
正确答案:B
31.下列关于类的继承描述中,( )是错误的。
A.派生类可以访问基类的所有数据成员,也能调用基类的所有成员函数
B.派生类也是基类,但基类不一定具有派生类的全部属性和方法
C.继承描述类的层次关系,派生类可以具有与基类相同的属性和方法
D.一个基类可以有多个派生类,但一个派生类只能由一个基类
正确答案:A
32.下列关于类的常量数据成员的说法中,正确的是( )。
A.常量数据成员只能是公有成员
B.可以在构造函数的初始化列表中为常量数据成员赋初值
C.可以在构造函数的函数体中为常量数据成员赋初值
D.常量数据成员的值初始化后就只能访问、无法修改
正确答案:B
33.系统提供的默认拷贝构造函数实现的是“浅拷贝”,下列关于浅拷贝的说法中正确的是( )。
正确答案:B
A.当一个类中有指针成员变量时,浅拷贝有可能会导致一片内存被重复释放
B.当一个类中有指针成员变量时,浅拷贝有可能导致一个对象中保存的数据不正确
C.如果一个类中只有int型和double型的成员变量,则浅拷贝不会出现任何问题
正确答案:C
D.如果一个类中有一个成员变量是char型数组,则使用浅拷贝会存在问题
正确答案:C
34.下列关于类的静态数据成员的说法中,正确的是( )。
A.静态数据成员的值初始化后不能再修改
B.静态数据成员必须在类体外定义和初始化
C.使用static关键字可以将一个数据成员声明为静态数据成员
D.静态数据成员的访问控制权限可以是公有、私有或保护
正确答案:D
35.对静态成员的正确描述是( )。
A.静态成员不属于对象,是类的共享成员
B.静态数据成员要在类外定义和初始化
C.调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
D.非静态成员函数也可以操作静态数据成员
正确答案:B
三、判断题 (共 15 道试题,共 30 分)
36.含有纯虚函数的类是抽象类。
37.线性结构的特点是只有一个结点没有前驱,只有一个结点没有后继,其余的结点只有一个前驱和后继。
38.C++基类中,不能被派生类继承的有构造函数和析构函数。
39.类成员的三种访问控制属性是public、private和friend。
正确答案:A
40.m(m≥0)棵相交的树的集合就构成了森林。
41.n个结点的有向图,若它有n(n-1)条边,则它一定是连通图。
42.在保护派生中,基类权限为private的成员在派生类中权限也为private。
43.具有纯虚函数的类是抽象类,它的特点是不可以定义对象。
44.有向图的邻接矩阵是对称的。
45.析构函数是一种函数体为空的成员函数。
46.在公有继承中,基类中的公有成员和私有成员在派生类中都是可见的。
47.类非成员函数形式的运算符重载函数通常采用友元函数,是为了在运算符重载中方便访问类中的非公有成员。
48.说明或定义对象时,类名前面不需要加class关键字。
49.在图的所有形式的生成树中,边上的权之和最小的生成树,称为图的最小生成树。
50.树中度为0的结点称为叶子结点(或终端结点),度不为0的结点称为分支结点(或非终端结点),分支结点也称为内部结点。
南开22秋学期《程序设计基础(下)》在线作业[答案]历年参考题目如下:
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.静态绑定是在程序执行时进行绑定