1 / 11
文档名称:

c++面向对象程序设计试题和答案.pdf

格式:pdf   大小:246KB   页数:11页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

c++面向对象程序设计试题和答案.pdf

上传人:小辰GG 9/23/2022 文件大小:246 KB

下载得到文件列表

c++面向对象程序设计试题和答案.pdf

相关文档

文档介绍

文档介绍:该【c 面向对象程序设计试题和答案 】是由【小辰GG】上传分享,文档一共【11】页,该文档可以免费在线阅读,需要了解更多关于【c 面向对象程序设计试题和答案 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
一、填空题(每空1分,共14分)
1、观看以下程序:
classpoint{
public:
voidshow(){cout<<”point”<<endl;}
};
voidmain()
_
_{
_
_
_pointp1;
_
_
_point*p;
_
_
_p=&p1;
_

_______________//通过对象p1访问show函数

_______________//通过指针p访问show函数
_
_
_}
_
_题
_2、在C++类中可以包含______________、______________和______________三种具有不
_
_答
_同访问控制权的成员。
_
_不
名3、定义类时,在类头中将使用关键字_____________来表示类定义的开始。
姓内
4、如果一个类中至少有一个纯虚函数,则该类称为________________。
_
_线
_5、C++类的组成包括数据成员和______________,友元_____(是、不是)该类的成员
_
_封
_函数。
_
_
_密6、友员函数是用关键字____________修饰的非成员函数。
_
_
_7、若有:

inti;

_int&j=i;
_
_i=10;
_
_
_j=i+1;
_
_
_则i=__________,j=__________。
_
_
_

8、new的功能是____________________,delete的功能是

____________________。
二、选择题(,共30分)
1、下列特性中不是面向对象程序设计语言所特有的是((D))。
(A)数据封装(B)继承(C)多态性(D)模板
2、((B))是给变量取一个别名,它引入了变量的同意词。
——第1页——
:.
(A)指针(B)引用(C)枚举(D)结构
3、类成员的访问权限中,((C))只能被本类的成员函数和其友元函数访问。
(A)share(B)public(C)private(D)protected
4、关于构造函数,下列说法不正确的是((D))。
(A)构造函数名字和类名相同
(B)构造函数在创建对象时自动执行
(C)构造函数无任何函数返回类型
(D)构造函数有且只有一个
5、派生类可以访问其基类的((D))。
(A)公有成员(B)保护成员
(C)私有派生(D)公有和保护成员
6、下列关于运算符重载的描述中,错误的是((B))。
(A)运算符重载不可以改变操作数的个数
(B)运算符重载不可以改变运算符的功能
(C)运算符重载不可以改变结合方向
(D)运算符重载不可以改变运算优先级
7、C++,它在求解问题方法上
进行的最大改进是((B))
(A)面向过程(B)面向对象(C)安全性(D)复用性
8、对于类中定义的成员,其隐含访问权限为(C)。


9、下面有关重载函数的说法中正确的是((C))
(A)重载函数必须具有不同的返回值类型;(B)重载函数形参个数必须不同;
(C)重载函数必须有不同的形参列表(D)重载函数名可以不同;
10、有如下的对类“CSample”的说明,其中(A)是错误的。
classCSample{
=23;
();
public:
(intval);
D.~CSample();
11、在inta=3,int*p=&a;中,*p的值是(D)


12、每个类((C))构造函数。
(A)只能有一个(B)只可有公有的
——第2页——
:.
(C)可以有多个(D)只可有缺省的
13、在一个类中可以对一个操作符进行((D))重载。
(A)1种(B)2种以下(C)3种以下(D)多种
14、在公有继承的情况下,基类非私有成员在派生类中的访问权限((B))
(A)受限制(B)保持不变(C)受保护(D)不受保护
15、应在下列程序划线处填入的正确语句是()
#include<>
_
_classBase
_
_
_{public:
_
_
_voidfun(){cout<<"Base::fun"<<ENDL;}
_
_
_};
_

classDerived:publicBase

_{voidfun()
_
_
_{____(C)_________//显示调用基类的函数fun()
_
_题
_cout<<"Derived::fun"<<ENDL;
_
_答
_}
_
_不
名};
姓内
(A)fun();(B)();(C)Base::fun();(D)Base->fun();
_
_线
_16、执行下面的程序将输出((A))
_
_封
_#include<>
_
_
_密classBASE{
_
_
_charc;

班public:
_
_BASE(charn):c(n){}
_
_
_virtual~BASE(){cout<<c;}
_
_
_};
_
_
_classDERIVED:publicBASE{
_

charc;

public:
DERIVED(charn):BASE(n+1),c(n){}
~DERIVED(){cout<<c;}
};
intmain()
{DERIVEDa('X');
——第3页——
:.
return0;
}
(A)XY(B)YX(C)X(D)Y
17、下面描述中,表达错误的是((B))
(A)公有继承时基类中的public成员在派生类中仍是public的
(B)公有继承是基类中的private成员在派生类中仍是private的
(C)公有继承时基类中的protected成员在派生类中仍是protected的
(D)私有继承时基类中的public成员在派生类中是private的
18、定义析构函数时,应该注意((C))
(A)其名与类名完全相同(B)返回类型是void类型
(C)无形参,也不可重载(D)函数体中必须有delete语句
19、对于在类中定义的静态数据成员,下面正确的说法是(C)



,也可以在类内初始化
20、C++中声明常量的关键字是(A)。

三、改错题(每处2分,共6分)
1、使用VC6打开考生文件夹下的工程proj1,,但
该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
member=0
member=5
menber=10
:
#include<>
classMyClass
{
public:
MyClass(inti){member=i;}
voidSetMember(intm){member=m;}
intGetMember()const{returnmenber;}
voidprint()cont{cout<<"member="<<MEMBER<<ENDL;}
private:
——第4页——
:.
intmember;
};
voedmain()
{
MyClassobj1;//更正_____________________________
();
MyClassobj2(3);
_
_=5;//更正__________________________
_
_
_(10);//更正_______________________
_
_
_();
_
_
_();
_

}

_
_
_
_四、写出下列程序的执行结果(每小题5分,共20分)
_
_题
_1、
_
_答
_#include<>
_
_不
名classSample
姓内
{intn;
_
_线
_public:
_
_封
_Sample(inti){n=i;}
_
_
_密friendintadd(Sample&s1,Sample&s2);
_
_
_};

班intadd(Sample&s1,Sample&s2)
_
_{
_
_
+;
_
_
_}
_
_
_voidmain()
_

{

Samples1(10),s2(20);
cout<<add(s1,s2)<<endl;
}
执行结果是:30
2、
——第5页——
:.
#include<>
intadd(intx,inty)
{
returnx+y+1;
}
doubleadd(doublex,doubley)
{
returnx+y-1;
}
voidmain()
{
inta=2,b=4;
doublec=,d=;
cout<<add(a,b)<<","<<add(c,d)<<endl;
}
执行结果是:7,9
3、
#include<>
classA
{
public:
intn;
};
classB:virtualpublicA{};
classC:virtualpublicA{};
classD:publicB,publicC
{
intgetn(){returnB::n;}
};
voidmain()
{
Dd;
——第6页——
:.
::n=10;
::n=20;
cout<<::n<<","<<::n<<endl;
}
执行结果是:10,20
_4、
_
_
_
_
_#include<>
_
_
_
_classmyclass
_
_
号{

inta,b;
_
_staticints;
_
_
_public:
_题
_myclass(intx,inty)
_
_答
_{a=x;b=y;s++;}
_
_不
名voidprint()
姓内{cout<<s<<endl;}
_
_线};
_
_intmyclass::s=0;
_封
_
_voidmain()
_
_密
_{
_
_myclassm1(1,2),m2(4,5),m3(6,7);

();
();
_
_
();
_
_
_}
_
_
_
_
_执行结果是:

系3
3
3
五、编程题(每题10分、共30分)
1、测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,
能计算矩形的面积。(10分)
——第7页——
:.
2、定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数
totalweight(),计算二者的重量和。(10分)
3、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。小车
类car是它的派生类,其中包含载人数passenger_load。每个类都有相关数据的输
出方法。在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置
并显示。(10分)
一、填空题(每空1分,共14分)
(1)();p->show()(2)公有、私有、保护(3)class(4)抽象类
(5)成员函数、不是(6)friend(7)11、11(8)动态申请内存空间、释放
由new申请的空间
二、选择题(,共30分)
1、D2、B3、C4、D5、D6、B7、B8、C9、C10、A
11、D12、C13、D14、B15、C16、A17、B18、C19、C20、
A
三、改错题(每错2分,共6分)
MyClassobj1(0);(5);(10);
四、写出下列程序的执行结果(每小题5分,共20分)
(1)30(5分)
(2)79()
(3)2020()
(4)
3(2分)
3(2分)
3(1分)
五、编程题(每题10分、共30分)
——第8页——
:.
1、
#include<>
#include<>
classrectangle//(2分)
{
private:
intx1,y1,x2,y2;//(2分)
public:
_
rectangle(intxx1,intyy1,intxx2,intyy2)//(1分)
_
_
_{
_
_x1=xx1;y1=yy1;x2=xx2;y2=yy2;
_
_
_}
_
_intgetarea()//(2分)
_

{

_returnabs((x2-x1)*(y1-y2));
_
_}
_
_
_题};
_
_voidmain()
_答
_
_{
_不

rectanglerect1(3,7,8,5);(2分)
姓内
cout<<()<<endl;(1分)
_
_线
_}
_
_封
_
_
_2、(10分)
_密
_
_#include<>
_
级classcar;(1分)

classboat{
_
_private:
_
_
_intweight;//(1分)
_
_
_public:
_
_boat(intw):weight(w){}//(1分)
_
_
名friendinttotalweight(boatb1,carc1);//(2分)
系};
classcar{/(1分)
private:
intweight;(1分)
public:
car(intw):weight(w){};
friendinttotalweight(boatb1,carc1);(1分)
};
——第9页——
:.
inttotalweight(boatb1,carc1)//(1分)
{
+;
}
voidmain()
{
carc1(1000);
boatb1(2000);
cout<<totalweight(b1,c1)<<endl;(1分)
}
3、(10分)
#include<>
classvehicle//定义汽车类(3分)
{
protected:
intwheels;//车轮数
floatweight;//重量
public:
vehicle(intwheels,floatweight);
intget_wheels();
floatget_weight();
floatwheel_load();
voidshow();
};
classcar:publicvehicle//定义小车类(3分)
{
intpassenger_load;//载人数
public:
car(intwheels,floatweight,intpassengers=4);
intget_passengers();
voidshow();
};
vehicle::vehicle(intwheels1,floatweight1)//(1分)
{
wheels=wheels1;
weight=weight1;
}
intvehicle::get_wheels()
{
——第10页——
:.
returnwheels;
}
floatvehicle::get_weight()
{
returnweight;
}
voidvehicle::show()(1分)
{
_
cout<<"车轮:"<<wheels<<"个"<<endl;
_
_
_cout<<"重量:"<<weight<<"公斤"<<endl;
_
_}
_
_
_car::car(intwheels,floatweight,
_
_intpassengers):vehicle(wheels,weight)
_

{

_passenger_load=passengers;
_
_}
_
_
_题intcar::get_passengers()
_
_{
_答
_
_returnpassenger_load;
_不

}
姓内
voidcar::show()
_
_线
_{
_
_封cout<<"车型:小车"<<endl;
_
_
_vehicle::show();
_密
_
_cout<<"载人:"<<passenger_load<<"人"<<endl;
_
级cout<<endl;

}
_
_voidmain()
_
_
_{
_
_
_carcar1(4,2000,5);(1分)
_
_cout<<"输出结果"<<endl;
_
_
();(1分)
系}
——第11页——