《面向对象程序设计》C++综合练习Word文件下载.docx
《《面向对象程序设计》C++综合练习Word文件下载.docx》由会员分享,可在线阅读,更多相关《《面向对象程序设计》C++综合练习Word文件下载.docx(58页珍藏版)》请在冰豆网上搜索。
7.假定AA为一个类,inta()为该类的一个成员函数,若该成员函数在类定义体外定义,则函数头为(
A.intAA:
:
a()
B.intAA:
a()
C.AA:
D.AA:
inta()
8.假定AA为一个类,a为该类公有的数据成员,若要在该类的一个成员函数中访问它,则书写格式为(
A.a
B.AA:
C.a()
9.若需要把一个类外定义的成员函数指明为内联函数,则必须把关键字(
)放在函数原型或函数头的前面。
A.in
B.inline
C.inLine
D.InLiner
10.在多文件结构的程序中,通常把类的定义单独存放于(
)中。
A.主文件
B.实现文件
C.库文件
D.头文件
11.在多文件结构的程序中,通常把类中所有非内联函数的定义单独存放于(
12.在多文件结构的程序中,通常把含有main()函数的文件称为(
C.程序文件
13.在C++程序中使用的cin标识符是系统类库中定义的(
)类中的一个对象。
A.istream
B.ostream
C.iostream
D.fstream
14.在C++程序中使用的cout标识符是系统类库中定义的(
15.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数的类型为(
A.int
B.char
C.AA
D.AA*
16.假定AA是一个类,abc是该类的一个成员函数,则参数表中隐含的第一个参数为(
A.abc
B.*this
C.this
D.this&
17.假定AA是一个类,“AA&
abc();
”是该类中一个成员函数的原型,若该函数存在对*this赋值的语句,当用x.abc()调用该成员函数后,x的值(
A.已经被改变
B.可能被改变
C.不变
D.不受函数调用的影响
18.假定AA是一个类,“AA*abc()const;
”是该类中一个成员函数的原型,若该函数返回this值,当用x.abc()调用该成员函数后,x的值(
D.受到函数调用的影响
19.类中定义的成员默认为(
)访问属性。
A.public
B.private
C.protected
D.friend
20.结构中定义的成员默认为(
二、程序填充题
1.已知一个类的定义如下:
#include<
iostream.h>
classAA{
inta[10];
intn;
public:
voidSetA(intaa[],intnn);
//用数组aa初始化数据成员a,用nn初始化数据成员n
intMaxA();
//从数组a中前n个元素中查找最大值
voidSortA();
//采用选择排序的方法对数组a中前n个元素,进行从小到大排序
voidInsertA();
//采用插入排序的方法对数组a中前n个元素进行从小到大排序
voidPrintA();
//依次输出数组a中的前n个元素
};
该类中MaxA()函数的实现如下,请在标号位置补充适当的内容。
int____
(1)_____
{
intx=a[0];
for(inti=1;
i<
n;
i++)
if(a[i]>
x)___
(2)___;
___(3)___;
}
2.已知一个类的定义如下:
voidAA:
SortA()
inti,j;
for(i=0;
___
(1)___;
i++){
intx=a[i],k=i;
for(j=i+1;
j<
j++)
if(a[j]<
x)___
(2)___
a[k]=a[i];
___(3)___;
}
3.已知一个类的定义如下:
void___
(1)___
for(i=1;
intx=a[i];
for(j=i-1;
j>
=0;
j--)
if(x<
a[j])___
(2)___;
else___(3)___;
a[j+1]=x;
三、写出下列程序的运行结果
1.#include<
#include<
string.h>
classCD{
char*a;
intb;
public:
voidInit(char*aa,intbb)
{
a=newchar[strlen(aa)+1];
strcpy(a,aa);
b=bb;
char*Geta(){returna;
intGetb(){returnb;
voidOutput(){cout<
<
a<
'
'
b<
endl;
}dx;
voidmain()
CDdy;
dx.Init("
abcdef"
30);
dy.Init("
shenyafen"
3*dx.Getb()+5);
dx.Output();
dy.Output();
2.#include<
a=newchar[strlen(aa)+1];
strcpy(a,aa);
b=bb;
};
CDdx,dy;
chara[20];
strcpy(a,dx.Geta());
strcat(a,"
xyz"
);
dy.Init(a,dx.Getb()+20);
四、程序设计题
1.根据下面类中Count函数成员的原型和注释写出它的类外定义。
int*a;
intMS;
voidInitAA(intaa[],intnn,intms){
if(nn>
ms){cout<
"
Error!
exit
(1);
MS=ms;
n=nn;
a=newint[MS];
for(inti=0;
MS;
i++)a[i]=aa[i];
intCount(intx);
//从数组a的前n个元素中统计出其值等于x的个数并返回。
2.根据下面类中Search函数成员的原型和注释写出它的类外定义。
intSearch(intx);
//从数组a的前n个元素中顺序查找值为x的元素,
//若查找成功则返回元素的下标,否则返回-1。
练习二
一.填空题
1.当类中一个字符指针成员指向具有n个字节的存储空间时,它所能存储字符串的最大长度为(
A.n
B.n+1
C.n-1
D.n-2
2.对于一个类的构造函数,其函数名与类名(
A.完全相同
B.基本相同
C.不相同
D.无关系
3.对于一个类的析构函数,其函数名与类名(
B.完全不同
C.只相差一个字符
4.类的构造函数是在定义该类的一个(
)时被自动调用执行的。
A.成员函数
B.数据成员
C.对象
D.友元函数
5.类的析构函数是一个对象被(
)时自动调用的。
A.建立
B.撤消
C.赋值
D.引用
6.一个类的构造函数通常被定义为该类的(
)成员。
A.公用
B.保护
C.私有
D.友元
7.一个类的析构函数通常被定义为该类的(
C.公用
8.假定AB为一个类,则执行“ABx;
”语句时将自动调用该类的(
A.带参构造函数
B.无参构造函数
C.拷贝构造函数
D.赋值重载函数
9.假定AB为一个类,则执行“ABx(a,5);
10.假定AB为一个类,则执行“AB*s=newAB(a,5);
”语句时得到的一个动态对象为_______。
A.s
B.s->
C.s.a
D.*s
11.假定AB为一个类,则执行“ABr1=r2;
A.无参构造函数
B.带参构造函数
C.赋值重载函数
D.拷贝构造函数
12.若需要使类中的一个指针成员指向一块动态存储空间,则通常在(
)函数中完成。
A.析构
B.构造
C.任一成员
13.当类中的一个整型指针成员指向一块具有n*sizeof(int)大小的存储空间时,它最多能够存储(
)个整数。
D.1
14.假定一个类的构造函数为“A(intaa,intbb){a=aa;
b=aa*bb;
}”,则执行“A
x(4,5);
”语句后,x.a和x.b的值分别为(
A.4和5
B.5和4
C.4和20
D.20和5
15.假定一个类的构造函数为“A(intaa=1,intbb=0){a=aa;
}”,则执行“Ax(4);
A.1和0
B.1和4
C.4和1
D.4和0
16.假定AB为一个类,则(
)为该类的拷贝构造函数的原型说明。
A.AB(ABx);
B.AB(AB&
x);
C.voidAB(AB&
D.AB(intx);
17.假定一个类的构造函数为“B(intax,intbx):
a(ax),b(bx){}”,执行“Bx(1,2),y(3,4);
x=y;
”语句序列后x.a的值为(
A.1
B.2
C.3
D.4
18.假定一个类AB只含有一个整型数据成员a,当用户不定义任何构造函数时,系统为该类定义的无参构造函数为(
A.AB(){a=0;
}
B.AB(intaa=0):
a(aa){}
C.AB(intaa):
a(aa){}
D.AB(){}
19.假定一个类AB只含有一个整型数据成员a,用户为该类定义的带参构造函数可以为(
A.AB(){}
B.AB():
a(0){}
C.AB(intaa=0){a=aa;
D.AB(intaa){}
20.对于任一个类,用户所能定义的构造函数的个数至多为(
A.0
B.1
C.2
D.任意个
二.程序填充题
//依次输出数组a中的前n个元素,最后输出一个换行
使用该类的主函数如下:
inta[10]={23,78,46,55,62,76,90,25,38,42};
AAx;
intm=___
(2)___;
cout<
m<
该程序运行结果为:
237846556276
78
x.SetA(a,8);
int___
(2)___;
x.PrintA();
2325465562767890
90
3.已知一个利用数组实现栈的类定义如下:
constintARRAY_SIZE=10;
classStack{
voidInit(){top=-1;
}//初始化栈为空
voidPush(intnewElem);
//向栈中压入一个元素
intPop();
//从栈顶弹出一个元素
boolEmpty(){//判栈空
if(top==-1)returntrue;
elsereturnfalse;
intDepth(){returntop+1;
}//返回栈的深度
voidPrint();
//按照后进先出原则依次输出栈中每个元素,直到栈空为止
private:
intelem[ARRAY_SIZE];
//用于保存栈元素的数组
inttop;
//指明栈顶元素位置的指针
voidStack:
Push(intnewElem){
if(___
(1)___){
cout<
栈满!
exit
(1);
//中止运行
___
(2)___;
elem[top]=___(3)___;
三.写出下列程序运行结果
classCE{
private:
inta,b;
intgetmax(){return(a>
b?
a:
b);
intc;
voidSetValue(intx1,intx2,intx3){
a=x1;
b=x2;
c=x3;
intGetMax();
intCE:
GetMax(){
intd=getmax();
return(d>
c?
d:
c);
intx=5,y=12,z=8;
CEex,*ep=&
ex;
ex.SetValue(x,y,z);
ex.GetMax()<
ep->
SetValue(x+y,y-z,20);
ep->
GetMax()<
2.#include<
intgetmin(){return(a<
intGetMin();
GetMin(){
intd=getmin();
return(d<
CE*ep;
ep=newCE;
SetValue(x+y,y-z,10);
GetMin()<
CEa=*ep;
a.GetMin()*3+15<
四.程序设计
1.根据下面类中MaxMin函数成员的原型和注释写出它的类外定义。
in