c++面向对象程序设计试题和答案经典题目.docx
《c++面向对象程序设计试题和答案经典题目.docx》由会员分享,可在线阅读,更多相关《c++面向对象程序设计试题和答案经典题目.docx(14页珍藏版)》请在冰豆网上搜索。
![c++面向对象程序设计试题和答案经典题目.docx](https://file1.bdocx.com/fileroot1/2023-2/28/8f035f8e-4dca-4b76-bd6c-459de53d7e16/8f035f8e-4dca-4b76-bd6c-459de53d7e161.gif)
c++面向对象程序设计试题和答案经典题目
填空题(每空1分,共14分)
1、观看以下程序:
classpoint{
public:
voidshow(){cout<<”point”<};
voidmain()
{
pointp1;
point*p;
p=&p1;
p1.show()//通过对象p1访问show函数
p.show()//通过指针p访问show函数
}
2、在C+啖中可以包含—公共—、—保护和—私有—三种具有不同访问控制权的成员。
3、定义类时,在类头中将使用关键字__class来表示类定义的开始。
4、如果一个类中至少有一个纯虚函数,则该类称为抽象类。
5、C++类的组成包括数据成员和成员函数,友元—是—(是、不是)
该类的成员函数。
6、友员函数是用关键字friend修饰的非成员函数。
7、若有:
inti;
int&j=i;
i=10;
j=i+1;
贝Hi=11,j=___11。
8、new的功能是分配内存空间,delete的功能是释放内
存空间。
十五、选择题(每小题1.5分,共30分)
1、下列特性中不是面向对象程序设计语言所特有的是(D)。
(A)数据封装(B)继承(C)多态性(D)模板
2、(B)是给变量取一个别名,它引入了变量的同意词。
{voidfun()
cout<<"Derived:
:
fun"<#includeclassBASE{
charc;
public:
BASE(charn):
c(n){}virtual~BASE(){cout<classDERIVED:
publicBASE{
charc;
public:
DERIVED(charn):
BASE(n+1),c(n){}~DERIVED(){cout<};
intmain()
{DERIVEDa('X');
return0;
}
A.该类的每个对象中都有一个静态数据成员
B.对象创建时产生
C.在类外进行初始化
D.既可以在类外初始化,也可以在类内初始化
20、C+冲声明常量的关键字是()。
A.constB.externC.publicD.enum
-六、改错题(每处2分,共6分)
1、使用VC6打开考生文件夹下的工程proj1,此工程包含一个源程序文件main.cpp,但
该程序运行有问题,请改正main函数中的错误,使程序的输出结果为:
member=0
member=5
mcnbci-10
源程序文件main.cpp清单如下:
扌ilichl〔b
cki朋MyClass
{
piih1ic:
MyClass(inti){member=i;}
voidSetMember(intm){member=m;}
intGetMember()const{returnmenber;}
voidprint()cont{cout<<"member="<priviilc:
intmember;
I;
Vui.xlmain()
{
MyClassobjl;//更正_objl.print();
MyClassobj2(3);
更正
obj1.member=5;//更正MyClass.SetMember(IO);//obj1.print();
obj2.print();
十七、写出下列程序的执行结果(每小题5分,共20分)
1、
#include
classSample
{intn;
public:
Sample(inti){n=i;}
friendintadd(Sample&s1,Sample&s2);
};
intadd(Sample&s1,Sample&s2)
{
returns1.n+s2.n;
}
voidmain()
{
Samples1(10),s2(20);
cout<}
执行结果是:
#include
intadd(intx,inty)
{
returnx+y+1;
}
doubleadd(doublex,doubley)
{
returnx+y-1;
}
voidmain()
{
inta=2,b=4;
doublec=2.6,d=7.4;cout<}
执行结果是:
3、
#include
classA
{
public:
intn;
};
classB:
virtualpublicA{};
classC:
virtualpublicA{};
classD:
publicB,publicC
{
intgetn(){returnB:
:
n;}
};
voidmain()
{
Dd;
d.B:
:
n=10;
d.C:
:
n=20;
cout<:
n<<","<:
n<}
执行结果是:
4、
#inelude
classmyclass
{
inta,b;
staticints;
public:
myclass(intx,inty)
{a=x;b=y;s++;}
voidprint()
{cout<
};
intmyclass:
:
s=0;
voidmain()
{
myclassm1(1,2),m2(4,5),m3(6,7);
m1.print();
m2.print();
m3.print();
}
执行结果是:
十八、编程题(每题10分、共30分)
1、测试一个名为rectangle的矩形类,其属性为矩形的左下角与右上角两个点的坐标,能计算矩形的面积。
(10分)
2、定义一boat与car两个类,二者都有weight属性,定义二者的一个友元函数
totalweight(),计算二者的重量和。
(10分)
3、设计一个汽车类vehicle,包含的数据成员有车轮个数wheels和车重weight。
小车
类car是它的派生类,其中包含载人数passenger_load。
每个类都有相关数据的输
出方法。
在主程序中定义一个car类对象,对其车轮个数、车重、载人数进行设置
并显示。
(10分)
一、填空题(每空1分,共14分)
(1)p1.show();p->show()
(2)公有、私有、保护(3)class(4)抽象类
(5)成员函数、不是(6)friend(7)11、11(8)动态申请内存空间、释放
由new申请的空间
三、改错题(每错2分,共6分)
obj2.SetMember(10);
MyClassobj1(0);obj1.SetMember(5);
四、写出下列程序的执行结果(每小题5分,共20分)
(1)30(5分)
(2)79(每个2.5分)
(3)2020(每个2.5分)
(4)
3(2分)
3(2分)
3(1分)
五、编程题(每题10分、共30分)
#include
#inelude
classrectangle〃(2分)
{
private:
intx1,y1,x2,y2;//(2分)
public:
rectangle(intxx1,intyy1,intxx2,intyy2)〃(1分){
x仁xx1;y仁yy1;x2=xx2;y2=yy2;
}
intgetarea()〃(2分)
{
returnabs((x2_x1)*(y1_y2));
}
};
voidmain()
{
rectanglerect1(3,7,8,5);(2分)
cout<}
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分)};
inttotalweight(boatb1,carc1)〃(1分)
{
returnbl.weight+cl.weight;
}
voidmain()
{
carc1(1000);
boatb1(2000);
cout<}
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()
{
returnwheels;
}
floatvehicle:
:
get_weight()
{
returnweight;
}
voidvehicle:
:
show()(1分)
{
cout<<"车轮:
"<cout<<"重量:
"<}
car:
:
car(intwheels,floatweight,intpassengers):
vehicle(wheels,weight)
{
passenger_load=passengers;
}
intcar:
:
get_passengers()
{
returnpassenger_load;
}
voidcar:
:
show()
{
cout<<"车型:
小车"<vehicle:
:
show();
cout<<"载人:
"<}
voidmain()
{
carcar1(4,2000,5);(1分)
cout<<"输出结果"<car1.show();(1分)
}