C++程序设计练习题与答案完整版本Word格式文档下载.docx

上传人:b****7 文档编号:22632406 上传时间:2023-02-04 格式:DOCX 页数:33 大小:24.02KB
下载 相关 举报
C++程序设计练习题与答案完整版本Word格式文档下载.docx_第1页
第1页 / 共33页
C++程序设计练习题与答案完整版本Word格式文档下载.docx_第2页
第2页 / 共33页
C++程序设计练习题与答案完整版本Word格式文档下载.docx_第3页
第3页 / 共33页
C++程序设计练习题与答案完整版本Word格式文档下载.docx_第4页
第4页 / 共33页
C++程序设计练习题与答案完整版本Word格式文档下载.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

C++程序设计练习题与答案完整版本Word格式文档下载.docx

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

C++程序设计练习题与答案完整版本Word格式文档下载.docx

28.包含纯虚函数的类称为抽象类,这种类只能用作()来派生新类。

由于抽象类的特殊性,我们可以说明抽象类的(),但不能说明抽象类的()。

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.类的析构函数的作用是()

A)一般成员函数B)类的初始化C)对象的初始化D)删除对象创建的所有对象

3.类的析构函数是在()调用的。

A)类创建时B)创建对象时C)删除对象时D)不自动调用

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

A)函数体含有循环语句B)函数体含有递归语句

C)函数代码少、频繁调用D)函数代码多、不常调用

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

A)类A的成员即类B的成员B)类B的成员即类A的成员

C)类A的成员函数不得访问类B的成员D)类B不一定是类A的友元

6.在类中声明转换函数时不能指定()

A)参数B)访问权限C)操作D)标识符

7.在公有继承的情况下,基类成员在派生类中的访问权限()

A)受限制B)保持不变C)受保护D)不受保护

8.在C++类体系中,不能被派生类继承的有()

A)转换函数B)构造函数C)虚函数D)静态成员函数

9.假定ClassN为一个类,则执行“ClassNx;

”语句时将自动调用该类的()

A)有参构造函数B)无参构造函数C)拷贝构造函数D)赋值构造函数

10.C++语言建立类族是通过()

A)类的嵌套B)类的继承C)虚函数D)抽象类

11.重载一元运算符--为类A的成员运算符,若有类A的对象obj,则表达式--obj被C++编译器解释为()。

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&

C)friendClassNoperator--(int);

D)friendClassNoperator--();

19.在公有派生时,下列描述中不正确的是()。

A)派生类的对象可以赋给基类的对象B)派生类对象的地址可以赋给指向基类的指针

C)派生类的对象可以初始化基类的引用

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);

};

4.

#include<

iostream>

usingnamespacestd;

int&

par=newint[6];

deletepar;

cout>

>

"

主函数End!

"

<

endl;

5.

long&

par=newlong[9];

deletepar;

cout<

Endl;

6.

CLassCN

longn;

CNpobj;

CN();

voidCN(intX);

四、分析程序输出题

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];

Exitingmain"

classCBase

intn;

CBase(intm=0){n=m;

virtualvoidprint(){cout<

InsideCBase"

n<

classCDrive:

publicCBase

CDrive(){n=0;

}

CDrive(inta,intb):

CBase(a),n(b){}

voidprint(){cout<

InsideCDrive"

voidmain()

CBaseb1,b2(99),*pb;

CDrivedd(11,22);

pb=&

b1;

pb->

print();

b2;

dd;

CBase:

print();

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

CName();

~CName();

CName:

CName(){num=0;

~CName(){cout<

CNamecarr[2];

退出main"

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

CDrive(){n=0;

CBase(a),n(b){}

CBaseba,bb(100),*pb;

CDrivedd(123,456);

ba;

bb;

10.

classCT

CT(inti){n=i;

operatorint(){returnn;

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{

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<

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)写出该类的所有构造函数的类外定义代码。

(2)写出对运算符“+”、“<

”、“>

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

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),圆类和正方形类都有构造函数,修改、显示数据成员值的函数,求面积函数。

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

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

//cn.h

CN(int);

voidPrint();

CN(intN){n=N;

voidCN:

Print(){cout<

n<

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

(2)在主程序中,创

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

当前位置:首页 > 党团工作 > 入党转正申请

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

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