C++程序设计练习题与答案1文档格式.docx

上传人:b****6 文档编号:17728504 上传时间:2022-12-08 格式:DOCX 页数:27 大小:120.49KB
下载 相关 举报
C++程序设计练习题与答案1文档格式.docx_第1页
第1页 / 共27页
C++程序设计练习题与答案1文档格式.docx_第2页
第2页 / 共27页
C++程序设计练习题与答案1文档格式.docx_第3页
第3页 / 共27页
C++程序设计练习题与答案1文档格式.docx_第4页
第4页 / 共27页
C++程序设计练习题与答案1文档格式.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

C++程序设计练习题与答案1文档格式.docx

《C++程序设计练习题与答案1文档格式.docx》由会员分享,可在线阅读,更多相关《C++程序设计练习题与答案1文档格式.docx(27页珍藏版)》请在冰豆网上搜索。

C++程序设计练习题与答案1文档格式.docx

由于抽象类的特殊性,我们

可以说明抽象类的(),但不能说明抽象类的()。

29.说明函数类型为“double”、函数名为“virfun”且无参数的纯虚函数的表达形式为()。

30.说明静态成员要使用关键字()。

31.当函数调用在前定义在后时,必须先对函数进行()说明。

32.类名为“ClassN”的类的拷贝构造函数的函数原型说明为()。

33.抽象类是包含()的类,必须注意:

不能说明抽象类的(),但可说明抽象类的()。

34.流插入运算符<

<

只能重载为友元函数,重载流插入运算符<

的函数名为()。

35.要防止在该成员函数中改变数据成员的值,就要在类的成员函数名之后、函数体之前加上关键字

()。

36.类和对象的关系可表述为:

类是对象的(),而对象则是类的()。

37•在C++中,三种继承方式的说明符号为()、()和(),如果不加说明,则默认的继

承方式为()。

38•如果只想保留公共基类的一个复制,就必须使用关键字()把这个公共基类声明为虚基类。

39.若要把voidmyfun()定义为类A的友元函数,则应在类A的声明中加入语句()。

40.类的静态成员分为()和()。

41•运算符重载要求保持其原来的操作数个数、

42.通过关键字()可以声明模板,通过关键字

43.请列出C++中两种用户自定义的数据类型:

44.构造函数的作用是()。

45.后置自增运算符“++”重载为类的成员函数

()、()和语法结构。

()指定函数模板的类型参数。

()、()。

(设类名为ClassName)的形式为()。

二、单选题

1.继承机制的作用是()

A)信息隐藏

B)

数据封装

C)定义新类

D)数据抽象

2.类的析构函数的作用

H.是

()

A)一般成员函数

类的初始化

C)对象的初始化

D)删除对象创建的所有对象

3.类的析构函数是在

)调用的。

A)类创建时

创建对象时

C)删除对象时

D)不自动调用

4.在()情况下适宜采用inline定义内联函数。

A)函数体含有循环语句

C)函数代码少、频繁调用

5.如果类A被说明成类B的友元,则(

A)obj.operator--()B)operator--(obj)C)obj:

:

operator--()D)obj:

operator--()

12.以下有四种关于类的说法,其中不正确的是()。

A)构造函数可以指定参数,但不能指定函数类型B)一个类可以有多个构造函数

C)析构函数不可以指定参数,但可以指定函数类型D)一个类只能有一个析构函数

13.面向对象程序设计讲求封装性,在C++中封装是借助于()实现的。

A)结构B)数组C)类D)函数

14.下面有四种关于类的说法,其中不正确的是()。

A)一个类可以有多个构造函数B)析构函数不可以指定函数类型,但可以指定函数参数

C)一个类只能有一个析构函数D)在一个类中可以说明其它类的对象

15.下列有关基类的叙述中不正确的是(),前提为"

公有派生”。

A)基类的公有成员在派生类中仍然是公有的B)基类的保护成员在派生类中仍然是保护的

C)基类的私有成员在派生类中仍然是私有的D)基类的私有成员在派生类中是不可访问的

16•以下有四种关于友元的描述,其中错误的是()。

A)类A的友元类B的成员函数都是类A的友元函数B)友元函数可以访问该类的私有数据成员C)类与类之间的友元关系可以继承D)友元可以提高程序的运行效率

17.C++的封装性是借助于()实现的。

A)函数B)数组C)结构D)类

18•要将--重载为类ClassN的后置友元运算符,那么,要在类中添加的原型说明为()。

A)friendClassNoperator--(ClassN&

int);

B)friendClassNoperator--(ClassN&

D)当基类的指针指向派生类对象时,通过该指针可以直接访问派生类中的成员20•以下关于继承成员的访问属性的叙述中,不正确的是()。

A)基类的保护成员在私有派生类中是私有的B)对基类成员的访问必须没有二义性

C)基类的保护成员在保护派生类中是保护的D)基类的保护成员在派生类中是保护的

三、程序改错题(改正下列类中的错误)

1.

classClassN

{

private:

intnmember;

ClassNpmember;

public:

ClassN();

intClassN(intx);

}

2.

voidmain()

charc[]=newchar[20];

deletec;

3.

classMyClass{

intn=1;

MyClasspO;

MyClass(inta=0);

void~MyClass(inta);

#include<

iostream>

usingnamespacestd;

voidmain()

int&

par=newint[6];

deletepar;

cout>

>

"

主函数End!

<

endl;

5.

usingnamespacestd;

long&

par=newlong[9];

deletepar;

cout<

Endl;

6.

CLassCN

longn;

CNpobj;

CN();

voidCN(intX);

};

四、分析程序输出题

1.

classA

A(){cout<

"

constructingA"

endl;

}

~A(){cout<

destructingA"

classB:

publicA

B(){cout<

constructingB"

~B(){cout<

destructingB"

classC:

publicB

C(){cout<

constructingC"

~C(){cout<

destructingC"

}};

{Cc1;

voidfun(int&

a,int&

b)

intp;

p=a;

a=b;

b=p;

voidexchange(int&

a,int&

b,int&

c)

if(a<

b)fun(a,b);

c)fun(a,c);

if(b<

c)fun(b,c);

inta=12,b=89,c=56;

exchange(a,b,c);

cout<

a="

a<

b="

b<

c="

c<

iostream.h>

classTC{

intnum;

TC();

intTEST(){returnnum;

~TC();

TC:

TC(){num=0;

~TC(){cout<

Destructorisactive"

TCtarr[5];

cout<

Exitingmain"

endl;

4.

classCBase

intn;

CBase(intm=0){n=m;

virtualvoidprint(){cout<

InsideCBase"

n<

endl;

classCDrive:

publicCBase

CDrive(){n=0;

CDrive(inta,intb):

CBase(a),n(b){}

voidprint(){cout<

InsideCDrive"

CBaseb1,b2(99),*pb;

CDrivedd(11,22);

pb=&

b1;

pb->

print();

b2;

dd;

pb->

CBase:

classCTest

longnum;

CTest();

~CTest();

CTest:

CTest(){num=0;

~CTest(){cout<

调用析构函数"

CTestcobj;

退出主函数"

classCN

CN(inti){n=i;

operatorint(){returnn;

CNcobj(123);

cobj<

7.

intnum=100;

ref=num;

ref<

ref=ref+100;

num<

num=num+100;

8.

classCName

longnum;

CName();

~CName();

CName:

CName(){num=0;

~CName(){cout<

CNamecarr[2];

退出main"

9•分析下列程序并写出程序的运行结果。

CBaseba,bb(100),*pb;

CDrivedd(123,456);

ba;

bb;

10.

classCT

CT(inti){n=i;

CTcObj(1234);

cObj<

五、编程题

1.下列类成员函数的定义不完整,请在填代码以使其完整。

floatx;

TC(int,float);

TC(TC&

TC(intn,floatf)

num=n;

TC(TC&

t)

x=t.x;

2.根据下面的主程序,完成类说明的最小形式(不要求实现成员函数的定义)。

classBase

;

{Basebo(6);

3.一个类的头文件如下所示,程序产生对象tco,且tco.num=10,并使用Show()函数输出这个对象

的值。

//tcn.h

classTCN{

intnum;

TCN(intn){num=n;

voidShow(){cout<

num<

#include<

#include"

tcn.h"

4.完成下面类中的成员函数的定义(在处填写适当的内容)。

classCTN

intmen;

floatmef;

CTN(int,float);

CTN(CTN&

CTN:

CTN()

{men=a;

=b;

CTN(—rObj)

{men=;

mef=.mef;

5•在—处填写适当内容,以便完成下列类成员函数的定义。

intmn;

floatmf;

CN(int=0,float=0);

CN(CN&

CN:

CN()

{this->

mn=mn;

=mf;

CN(rObj)

mn=;

mf=.f;

6•填上合适的字句,使程序的最终结果为200。

classCNumber

intval;

CNumber(inti){val=i;

int();

CNumber:

operatorint(){}

classnum:

publicCNumber{

num(inti):

CNumber(i){}

numn(100);

inti=n;

i+n<

endl;

7•下面是一个类的测试程序,设计出能使用如下测试程序的类:

Testto;

to.Init(300,200);

to.Print();

输出结果:

300-200=100

8.已知复数类Complex的声明如下:

classComplex

Complex();

Complex(double);

Complex(double,double);

friendComplexoperator+(Complex&

Complex&

friendostream&

operator<

(ostream&

friendistream&

operator>

(istream&

doublereal,imag;

要求:

(1)写出该类的所有构造函数的类外定义代码。

⑵写出对运算符“+”、“<

”、“>

”进行重载的运算符重载函数的定义。

9.

个通用的用

下列AbstractC类是一个表示形状的抽象类,area()为求图形面积的函数,total()则是以求不同形状的图形面积总和的函数。

classAbstractC

virtualdoublearea()=0;

};

doubletotal(AbstractC*sa[],intn)

doubles=0.0;

for(inti=0;

i<

n;

i++)s+=sa[i]->

area();

returns;

(1)从AbstractC类派生圆类(Circle)、正方形类(Square),圆类新增数据成员半径(r),正方形类新增数据成员边长(a),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。

⑵写出main()函数,计算半径为3.5的圆和边长为7.9的正方形的面积和(必须通过调用total函数计算)。

10.一个类的头文件cn.h的内容如下所示:

//cn.h

CN(int);

voidPrint();

CN(intN){n=N;

voidCN:

Print(){cout<

*<

(1)编写一个主程序,产生对象Obj,且使Obj对象中的n成员的值为100,并使用Print()函数输出这个对象中私有成员n的值。

(2)在主程序中,创建一动态对象,使该动态对象的数据成员值为2015,并使用指针pObj指向该动

态对象,然后输出该动态对象的数据成员的值。

11.一个类的头文件CT.h的内容如下所示:

//CT.h

intm;

CT(int);

voidShowM();

CT:

CT(intn){m=n;

voidCT:

ShowM(){cout<

m<

(1)编写一个主程序,产生对象mObj,且使mObj对象中的m成员的值为11,并使用ShowM()函数

输出这个对象中私有成员m的值。

(2)在主程序中,创建一动态对象,使该动态对象的数据成员值为126,并使用指针pObj指向该动态

对象,然后输出该动态对象的数据成员的值。

12•使用运行时多态性编程实现三角形、矩形和圆的总面积的统计并输出结果。

三角形、矩形和圆类的类名分别为T、R和C。

T类必须以S类作基类,R类必须从T类派生,C类必须以S作基类。

Shape类的定义如下:

classS

intx,y;

S(inta=0,intb=0):

x(a),y(b){}

virtualintArea()=0;

不必建立工程,将所有代码都放在一个源文件中。

在主函数中,必须调用下列Sum函数来统计各类图

形面积的总和。

intSum(S*s[],intn

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 高考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1