最新奥鹏远程南开大学《程序设计基础(下)》20春期末考核 -参考答案Word文档格式.docx
《最新奥鹏远程南开大学《程序设计基础(下)》20春期末考核 -参考答案Word文档格式.docx》由会员分享,可在线阅读,更多相关《最新奥鹏远程南开大学《程序设计基础(下)》20春期末考核 -参考答案Word文档格式.docx(13页珍藏版)》请在冰点文库上搜索。
|
5.下列()不是构造函数的特征。
A构造函数的函数名与类名相同
B构造函数可以重载
C构造函数可以设置默认参数
D构造函数必须指定类型说明
D构造函数必须指定类型说明|
6.在一个长度为n的顺序存储的线性表中,向第i个元素(1≤i≤n+1)位置插入一个新元素时,需要将()个元素向后移动一个位置。
An-i
Bn-i+1Cn-i-1Di
Bn-i+1|
7.在二叉树的第i层上至多有()个结点(i≥1)。
A2的i次方减1B2的i-1次方
C2的i次方加+1D2的i+1次方
B2的i-1次方|
8.对于任意一个类,析构函数的个数最多为()。
A0
B1
C2
D3
B1|
9.若让元素1,2,3依次进栈,则出栈次序不可能出现()的情况。
A3,2,1B2,1,3C1,3,2D3,1,2
D3,1,2|
10.类模板的模板参数()。
A只可作为数据成员的类型
B只可作为成员函数的返回类型C只可作为成员函数的参数类型D以上三者皆可
D以上三者皆可|
11.在一棵完全二叉树中,根结点的编号为1,按照由上到下由左到右的顺序为二叉树结点编号。
若编号为5的结点存在右孩子,则右孩子结点的编号为()。
A9
B10
C11
D12
C11|
12.在下述结论中,正确的是( )。
A在树中,互为堂兄弟的结点拥有相同的双亲
B二叉树的度为2
C二叉树的左右子树可任意交换
D深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树
D深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树|
13.包含类fstream定义的头文件是( )。
AfstreamBofstreamCifstreamDiostream
Afstream|
14.基类和派生类可以分别叫做()。
A“大类”和“小类”
B“父类”和“子类”
C“小类”和“大类”
D“子类”和“父类”
B“父类”和“子类”|
15.撤消对象时,系统自动调用()函数。
A成员函数B构造函数C析构函数D普通函数
C析构函数|
16.关于对象成员的构造函数的调用顺序,说法正确的是()。
A与它们在成员初始化列表中给出的顺序相同
B与析构函数的调用顺序相同
C与它们在类中说明顺序相同
D以上说法都不对
C与它们在类中说明顺序相同|
17.有关类和对象的说法不正确的是()。
A对象是类的一个实例
B一个类只能有一个对象
C任何一个对象只能属于一个具体的类
D类与对象的关系和数据类型和变量的关系相似
B一个类只能有一个对象|
18.关于类和对象不正确的说法是( )。
A类是一种类型,它封装了数据和操作
B对象是类的实例
C一个类的对象只有一个
D一个对象必属于某个类
C一个类的对象只有一个|
19.在C++中,要实现动态联编,可以使用( )调用虚函数。
A类名
B派生类指针
C对象名
D基类指针
D基类指针|
20.下面描述中,错误的是( )。
A在基类定义的public成员在公有继承的派生类中可见,也能在类外被访问
B在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问C在基类定义的public和protected成员在保护继承的派生类中可见
D在派生类中不可见的成员要变成可访问的,需要进行访问声明
B在基类定义的public和protected成员在私有继承的派生类中可见,在类外可以被访问|
21.已知Circle类定义如下所示,则下列说法正确的是( )。
classCircle
{
public:
doublem_x,m_y;
doublem_radius;
voidsetCenter(doublex,doubley)
m_x=x;
m_y=y;
}
voidsetRadius(doubleradius)
m_radius=radius;
doublegetArea()
return3.14*m_radius*m_radius;
};
Am_x、m_y和m_radius都是Circle类的成员变量
BsetCenter、setRadius和getArea都是Circle类的成员函数
C类定义体后面的分号可以省略
D将doublem_radius;
改为doublem_radius=1;
,则表示m_radius成员变量的初值为1
Am_x、m_y和m_radius都是Circle类的成员变量|BsetCenter、setRadius和getArea都是Circle类的成员函数|
22.对静态成员的错误描述是( )。
A静态成员不属于对象,是类的共享成员
B静态数据成员要在类外定义和初始化
C调用静态成员函数时要通过类或对象激活,所以静态成员函数拥有this指针
D静态成员函数可以操作非静态数据成员
|D静态成员函数可以操作非静态数据成员|
23.下列关于函数模板的描述中,正确的是( )。
A函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数B函数模板和普通函数重载时,函数调用会优先调用符合要求的函数模板C函数模板的主要作用是减少可执行程序文件的尺寸
D函数模板的主要作用是简化程序编写
A函数模板和普通函数重载时,函数调用会优先调用符合要求的普通函数|D函数模板的主要作用是简化程序编写|
24.下面对析构函数的正确描述是( )。
A系统可以提供默认的析构函数
B析构函数必须由用户定义
C析构函数没有参数
D析构函数可以设置默认参数
A系统可以提供默认的析构函数|C析构函数没有参数|
25.当类的继承方式为公有继承时,基类的()成员的访问属性在派生类中不变
A公有成员B保护成员C私有成员D友元成员
A公有成员|B保护成员|
26.在线性表的链式存储结构中,插入和删除操作时,元素移动次数与插入和删除元素的位置有关。
T对
F错
F错|
27.线性表中的元素可以是任意类型的,但同一线性表中的数据元素必须具有相同的类型。
T对|
28.getline()函数从流中提取终止字符,但终止字符被丢弃。
29.在面向对象程序设计中,每个对象可以单独设置属性值。
30.在删除一个动态对象时,将自动调用该动态对象所属类的析构函数。
31.对链表进行插入和删除操作时不必移动链表中的结点。
32.一个类的构造函数中可以不包含对其子对象的初始化。
33.对象成员的访问与结构变量成员的访问相同,使用运算符.或->
。
34.对于树中的任一结点,如果其各棵子树的相对次序被用来表示数据之间的关系,即交换子树位置会改变树所表示的内容,则称该树为有序树;
否则称为无序树。
35.线性表的顺序存储结构的特点是逻辑关系上相邻的两个元素在物理位置上也相邻。
36.下面的程序是在SHUZU类中重载运算符[],程序的运行结果为“B[4]=6”,请将程序补充完整。
#include iostream&
gt;
usingnamespacestd;
classSHUZU{ private:
int*v;
ints;
public:
SHUZU(inta[],intn);
~SHUZU() { delete[]v;
}
intsize() { returns;
} int&
##(inti);
};
SHUZU:
:
SHUZU(inta[],intn)
{ if(n=0) { v=NULL;
s=0;
return;
} s=n;
v=newint[s];
for(inti=0;
in;
i++)v[i]=a[i];
}int&
operator[](inti){returnv[i];
}intmain(){int
b[7]={0,2,3,4,6,7,10};
SHUZUB(b,7);
cout "
B[4]="
##;
return0;
}
37.下面的程序是在str类中重载运算符=,请将程序补充完整,使程序的输出结果为:
heshehehe#include iostream&
classstr{private:
char*st;
public:
str(char*a) { set(a);
} str&
operator=(## ) { delete[]st;
set(a.st);
return*this;
} voidshow() { cout st endl;
} ~str() { delete[]st;
} voidset(char*s) { st=newchar[strlen(s)+1];
strcpy(st,s);
}};
intmain(){strs1("
he"
),s2("
she"
);
s1.show();
s2.show();
##;
38.读程序写结果题,具体题目内容如下:
已知顺序表类模板的C++描述如下:
templateclassT&
classLinearList{public:
LinearList(intLLMaxSize);
构//造函数,创建空表
~LinearList();
//析构函数,删除表LinearListT&
&
Insert(intk,constT&
x);
//在第k
个位置插入元素x,返回插入后的线性表boolIsEmpty()const;
// 判断表是否为空,
表空返回true,表非空返回false intGetLength()const;
/返/
回表中数据元素的个数
boolGetData(intk,T&
/将/表中第k个元素保存到x中,不存在则返回false bool
ModifyData(intk,constT&
/将/表中第k个元素修改为x,不存在则返回false int
Find(constT&
//返回x在表中的位置,如果x不在表中返回0 LinearListT&
DeleteByIndex(constintk,T&
/删/除表中第k个元素,并把它保存到x中,返回删除后
的线性表LinearListT&
DeleteByKey(constT&
x,T&
y);
//删除表中关键字为x元素,返回删除后的线性表voidOutPut(ostream&
out)const;
// 将线性表放到输出流out中输出private:
intlength;
//当前数组元素个数intMaxSize;
// 线性表中最大元素个数T*element;
// 一维动态数组};
intmain(){ LinearListint&
IntegerLList(10);
inti,x;
for(i=1;
i11;
i++) IntegerLList.Insert(i,i*5);
for(i=2;
i=3;
i++) { IntegerLList.DeleteByIndex(i,x);
cout x endl;
}cout endl;
return0;
}请写出主函数main执行后在屏幕上的输出结果。