一. 填空题:(每空1分,共32分)
______形结构的数据之间存在一对多的非线性关系,______形结构的数据之间存在多对多的非线性关系,带权的图通常称为______。
后序遍历序列和中序遍历序列相同的二叉树有:______二叉树、仅有______结点的二叉树、全部只有______子树的二叉树。
二叉查找树查找的平均比较次数取决于树的______。
______排序属于非比较排序方法。
______查找属于非比较查找方法。
在顺序存储的某二叉树中,若某结点Ki有右孩子,则其右孩子为结点______,而其双亲若存在,则为结点______。
派生类构造函数执行的次序是:调用________构造函数,执行__________的构造函数,执行________的构造函数。
抽象类是含有________函数的类,只能作为________类来使用,其纯虚函数的实现由________类给出。抽象类________实例化对象,________作为函数的返回类型和函数的参数类型,如果一个派生类继承了抽象类,但是却没有重新定义抽象类中的________函数,则该派生类仍然是________。
使用文件I/O类的程序需要包含头文件________。
运算符被重载后,不能改变________和________,也不能改变语法结构。只有将运算符重载为类的________函数或是类的________函数时,才能使被重载的运算符能够对新的数据类型进行操作。
如果一个类A是类B的友元类,那么类______的所有成员函数都是类______的______函数,可以访后者的______成员变量,
引入虚函数是为了实现______,其定义方法为:
______<函数返回类型><虚函数名称>(<参数列表>)
二.判断题(每题6分,共24分)
1.试分别判断具有3个结点的树和3个结点的二叉树的所有不同形态。
具有3个结点的树有______种形态,如图______所示。
具有3个结点的二叉树有______种形态,如图______所示。
图1 图2
图3 图4
2.判断图5所示二叉树的各种遍历方法的名称:
______序遍历结点序列为:DBEAGHFC
______序遍历结点序列为:DEBHGFCA
______序遍历结点序列为:ABDECFGH
图5
3.对图6所示的无向图,从顶点3出发,
一种可能的____度优先搜索遍历序列为: 3,2,1,4,5,6,7,8,9。
一种可能的____度优先搜索遍历序列为: 3,2,4,1,5,6,7,9,8。
相应的______度优先生成树如图7。
相应的______度优先生成树如图8。
图6一个无向图 图7 图8
4.试判断以下各图中所给出的二叉树,哪些是完全二叉树,哪些是堆,哪些是二叉排序树?
(a) (b) (c)
属于完全二叉树的有:____________
属于二叉排序树的有:____________
属于堆的有: __________________
三.选择题:(每题2分,共10分)
1.已知int a=7;
int *pa=&a;
输出pa的地址的方法是:______。
A. cout<
C. cout<<*pa; D. cout<
2.下列输出字符A的方法中,______是错误的。
A. cout.put(‘A’) B. cout<< ‘A’;
C. cout<
3.下列关于getline()函数的表述中,______是错误的。
A. 该函数中所使用的终止符只能是换行符。
B. 该函数读取的字符中长度是受限制的;
C. 该函数读取字符串时遇终止符停止;
D. 该函数是用来从键盘上读取字符串的;
4.说明下面程序的作用是:______。
void main()
{ char str[32];
while(cin>>str)cout<<"\n"<}
输入:Tom and Jerry
A.将输入的句子显示出来;
B.将输入的句子每32个字符为一行显示出来。
C.将输入的句子的前32个字符截断并显示出来;
D.将输入句子的每个单词划分为字符串显示出来;
5.对输出流进行下列操作后,显示的基数是:______。
cout<< hex;cout< A.十进制; B.八进制; C.十六进制; D.进制设置错误。
四.阅读分析:(每空2分,共12分)
1.以下程序段的输出结果是:____________________
main()
{ char str[20];
cin>>str; cout<}
输入:This is an example.
2.从R[______] 开始存放的递______堆排序的算法实现如下:
void creatheap(ElemType R[],int i,int n)
{int j; ElemType t;
t=R[i]; j=2*i;
while(j<=n)
{ if((jR[j+1])) j++;
if(t>R[j])
{ R[i]=R[j]; i=j;j=2*i;}
else j=n+1;
R[i]=t;
}
}
void heapsort(ElemType R[],int n)
{
ElemType t;
for(int i=n/2;i>=1;i--)
creatheap(R,i,n);
for(i=n;i>=1;i--)
{
t=R[1];
R[1]=R[i];
R[i]=t;
creatheap(R,1,i);
}
}
3.给出下面程序的运行结果。(本题6分)
class incount{
int c1,c2;
public:
incount(){c1=0;c2=1000;}
incount(int vc1,int vc2){c1=vc1;c2=vc2;}
void retcount(void){cout<<"c1="< incount operator ++(){c1++;c2++;return incount(c1,c2);}
};
void main()
{
incount ic1,ic2(100,9999);
ic1.retcount();
ic2.retcount();
ic1++;
// ic1.retcount();
ic2=ic1++;
ic2++.retcount();
}
运算结果为:
c1=_______ c2=_______
c1=_______ c2=_______
c1=_______ c2=_______
五.设计题:(每空2分,共22分)
1.编程要求将文件data.txt复制到文件data1.txt,要求补充完整参考程序如下:
#include__________________
#include__________________
using __________________
int CopyFile( char *s1, char *s2) //复制文件
{
char ch;
fstream infile,outfile;
infile__________________ //打开文件
if(!infile)
{
cout<<"文件"< return 0;
}
outfile__________________ //打开文件
if(!outfile)
{
cout<<"文件"< return 0;
}
while(i
--------------------next---------------------
阅读(1070) | 评论(0) | 转发(0) |