面向对象程序设计编程题复习及其答案.docx
《面向对象程序设计编程题复习及其答案.docx》由会员分享,可在线阅读,更多相关《面向对象程序设计编程题复习及其答案.docx(35页珍藏版)》请在冰点文库上搜索。
![面向对象程序设计编程题复习及其答案.docx](https://file1.bingdoc.com/fileroot1/2023-5/23/d043fd97-f2cc-4aa4-9b30-283a642a5595/d043fd97-f2cc-4aa4-9b30-283a642a55951.gif)
面向对象程序设计编程题复习及其答案
《面向对象程序披廿》复习題
1、(C++的输人綸出)天猫优惠券,我就要券.591q.
定义一个函Umax,实现输入两f数a、b,比较并U小到大输岀。
2、(函数的重载)
(1)定义一个带两个参数的函Umax,输岀最大值。
(2)B定义一个带三个参数的函Umax,输岀最大值。
(3)主函数测试之。
3、(有默认参数的函数)
将题2用带默认参数的函数实现。
4、(变量的引用)
(1)定义一个swapl函数,以普通形参传人两个变量a、b,互换a、b的值。
(2)定义一个swap2函数,以指针形参传人两f变量a、b,互换a、b的值。
(3)定义一个swap3函数,以引用形参输人两个变量a、b,互换a、b的值。
(4)主函数定义两个变量x、y传人三个函数,观察x、y值前后的变化。
5、(类的定义)
定义一个student类,数据成员包祐:
学号num,name,年Rage,tf别sex,成员函数色扌舌:
(1)set函数,建盘输人学号,,年龄,性别
(2)display函数,输出学生信息。
6、(沟造函数和折构函数)
定义一个student类,数据成员包牯:
学号num,name,年ftage,ft别sex,成员函nets:
(1)沟造函数,初始化学号,,年龄,II别
(2)display函数,输岀学生信息。
(3)析梅函数,输出学生学号。
(4)主函数定义名个对象,并注恿构造函数和折沟函数的调用顺序。
7、(沟造函数的重颈)
在題6基础上增加一彳、默认构造函数,实现构造函数的重我
8、将题6用带默认参数的构造函数实现。
9、(对象数组和对象的动态建立)
在題8基础上,实现如下壬函数:
(1)在主函数中定义一个包含三个学生的数组,并初始化之。
(2)在主函数中定义一个student类指针p并用newg算符分配动态存
(3)用deleteN除p指向的动态存。
(4)观察梅造函数和折沟函数的调用。
10、(复制构造函数)
在题8基础上新増加一个夏制沟造函数,并主函数新増夏制沟造对象。
11、(静态成员)
定义一个student类,数据成员包牯:
学号num,name,U?
绩score,累加总分sum,累廿人数count。
成员函数內括:
构造函数貌廿人数count;
(1)非静态成员total函数,求sumo
(2)静态成员average函数,求平血成绩。
(3)主函数定义色含3个学生的数组,求三个学生的平均成绩。
12、(友元函数)
定义一个Time类,松有数据成员:
时hour、分minute、秒second成员函数:
构造函数Time()
定义一个更元函数display,使之前问秋有成员输岀时分枚。
13、(运算符重载)
(1)定义一个复数类,实现对“+”,》,<<的重裁,使之可实现以下主函数。
intmain()
{
plexa(3,4),b(1,2),c,d,e,f;
c=a+b;
d=a+5;
e=3+b;
cin»f;
cout«f«endl;
return0;
I
(2)定义一个Time类,实现对“++”的前缀、后缀重裁。
P134
i++:
单目运算符天猫优惠券,我就要券.591q.
14、(单址;承及派生类构造函数)
(1)定义一个person类,数据成员fifi:
name,年龄age,性别sex
成员函数:
枸造函数及display函数
(2)定义一个派生类student,公有墨承与person类,新贈成员:
专tmajor,人
学日期enterdate(Date类自定义)。
(3)主函数定义student对象,各类构造函数的啣用顺序。
15、(多抵承)
在14g基础上由person类再盪生岀teacher类,新増成员:
职称title,I资wage
16、(虚擁承)
由student类和teacher类共同派生出graduate类,新増成员:
年级grade,将person类定义成虛基类,实观用虛進承解决二义性。
17、(抽象类及多态性)
定义一个抽象基类Shape,由它派生岀5个派生类,Circle(圆形)、Square(正方形)、Rectangle(矩形)、Trapezoid(悌形)、Trian°el(三角形)。
用虚函数分别it算几何图形面枳,并求他Hl的和。
要求定义一个基类岳针,使它指向毎一个派生类对象,体现其多态性。
1、#includeusingnamespacestd;
voidmax()
{
inta,b;
cout«"请输入两个数:
"«endl;
cin»a»b;
if(a>b)
else
cout«a«B"«b«endl;
intmain()
{
max();
return0;
}
2、#includeusingnamespacestd;
voidmax(intaJntb)
{
if(a>b)
cout«a«endl;else
cout«b«endl;
}
voidmaxfintajntbjntc)
if(a>b&&a>c)cout«a«endl;
elseif(b>c)
cout«b«endl;
else
cout«c«endl;
}
intmain()
{
max(2,5);
max(7,5,3);
return0;
}
3、#includeusingnamespacestd;
voidmax(inta,intbjntc=0){
if(a>b&&a>c)
cout«a«endl;
elseif(b>c)
else
cout«c«endl;
intmain()
{
max(2,5);
max(7,5,3);
return0;
1
4、#includeusingnamespacestd;
voidswap1(inta,intb)
{
inttemp;
temp=a;
a=b;
b=temp;
}
voidswap2(int*a,int*b)
inttemp;
temp=*a;
*a=*b;
*b=temp;
I
voidswap3(int&ajnt&b)
{
inttemp;
temp=a;
a=b;
b=temp;
I
intmain()
{
intx,y;
x=5;y=7;
swap1(x,y);
coutcc'XFvvxcc”y=,,«y«endI;
x=5;y=7;
swap2(&x,&y);
x=5;y=7;
swap3(x,y);
cout«,,x="«x«"y=H«y«endl;
return0;
I
5、#include
include
usingnamespacestd;
classstudent
{
private:
intnum;
stringname;
intage;
charsex;
public:
voidset()
(
cout«"iO人:
学号,,年龄,性别(form)"«endl;
cin»num»name»age»sex;
voiddisplayOcout«"学号:
w«num«endl;
cout«":
"«name«endl;
cout«"年龄:
Wvagevvendl;cout«B1l9J:
"«sex«endl;
intmain()
{
students;
s.set();
s.displayf);
return0;
}
6、#includeinclude
usingnamespacestd;
classstudentprivate:
intnum;
stringname;
intage;
charsex;
public:
/*voidset()
{
cout«"请输人:
学号,,年齡,性别(form)"«endl;cin»num»name»age»sex;
}
*/
studentfintnum,stringnamejntajnts)
{
cout«"调用构造函数num=H«num«endl;
this->num=num;
this->name=name;
age=a;
sex=s;
}天猫优無券,找就要券.591q.
voiddisplayO
cout«"学号:
M«num«endl;
cout«":
”<cout«""«age«endl;
cout«'ttSO:
"«sex«endl;
}
-studentf)
{
cout«'ffi构函数学号:
M«num«endl;
intmain()
{
students(1001三・,25,f),s1(1002;'四",24,'mJ;
//s.set();
s.displayf);
s1.display();
return0;
I
7、#include
includeusingnamespacestd;
classstudentprivate:
intnum;
stringname;
intage;
charsex;
public:
/*voidset()
{
cout«"iO人:
学号,,年龄,性别(form)"«endl;cin»num»name»age»sex;
I
*/
studentf)
(
cout«"调用构造函数num="«0«endl;
num=0;
name=m,;
age=18;
sex=f;
student(intnum,stringnamejntajnts)
cout«"调用构造函数num』vvrwmvvendl;
this->num=num;
this->name=name;
age=a;
sex=s;
voiddisplayO
(
cout«"学号:
"«num«endl;
cout«":
"«name«endl;
cout«""«age«endl;
cout«"性别:
"vvsexvvendl;
}
-studentf)
I
cout«"ffi构函数学号:
H«num«endl;
intmain()
students(1001;三:
25,f),s1(1002,110,,,24,,m,),s2;
//s.set();
s.displayO;
cout«endl;
s1.display();
cout«endl;
s2.display();
cout«endl;
return0;
)
8、#include
include
usingnamespacestd;
天猫优惠券,我就要券.591q.
classstudent
{
private:
intnum;
stringname;
intage;
charsex;
public:
studentfintnum=O,stringname=IIB,inta=18Jnts='f')
I
cout«B调用构造函Unum="«num«endl;
this->num=num;
this->name=name;
age=a;
sex=s;
voiddisplayO
(
cout«"学号:
"cvnumcvendl;cout«":
"«name«endl;
cout«"年龄:
"«age«endl;
cout«'tf9J:
"«sex«endl;
I
-studentf)
cout«"
天猫优惠券我就要券・591q.学号:
-«num«endl;
intmain()
{
students(1001;三:
25,f),s1(1002;0",24,'m'),s2;
//s.set();
s.displayO;
cout«endl;
s1.display();
cout«endl;
s2.display();
cout«endl;
return0;
I
9、#include
include
usingnamespacestd;
classstudent
private:
intnum;
stringname;
intage;
charsex;
public:
studentfintnum=O,stringname=,,B,inta=18,ints=,f,)(
cout«"调用构造函数num="«num«endl;
this->num=num;
this->name=name;
age=a;
sex=s;
I
voiddisplayO
I
cout«"学号:
Zmumccendl;
cout«B:
M«name«endl;
cout«"年龄:
tcagevcendl;
cout«'ttJiJ:
"«sex«endl;
~student()
{
cout«"ffi构函数学号:
H«num«endl;
intmain()
{
students[3]={student(1001,"三",25,f),student。
002:
四",24,'m')};
for(inti=0;i<3;i++)
{
天猫优惠券,我就要券.591q.
s[i].display();
cout«endl;
}
student*p;
p=newstudent(1003,"王五',23,'f');
p->display();
cout«endl;
deletep;
return0;
I
10、#include
include
usingnamespacestd;
classstudent
{
private:
intnum;
stringname;
intage;
charsex;
public:
studentfintnum=0,stringname=,,B,inta=18,ints='f,)(
cout«'ifi用构造函数num=M«num«endl;
this->num=num;
this->name=name;
age=a;
sex=s;
student(student&s)
{
天掘优惠券,我就要券.591q.
num=s.num;
name=s.name;
age=s.age;
sex=s.sex;
}
voiddisplayO
{
cout«"学号:
tvnumcvendl;
cout«":
"«name«endl;
cout«"年龄:
tvage«endl;
cout«B性别:
"«sex«endl;
}
~student()
{
cout«"|fi构函数学号:
"«num«endl;
intmain()
students1(1OO1;5B,25,,f,);
students2(s1);
s1.display();
s2.display();
return0;
}
11、
#include
include
usingnamespacestd;
classstudent
{
private:
intnum;
stringname;
floatscore;
staticfloatsum;
staticintcount;
public:
studentfintnum=0,stringname=l,B,floats=80)(
this->num=num;
this->name=name;
score=s;
count++;
voiddisplayO
{
cout«"学号:
"«num«endl;cout«":
”《name«endl;
cout«"ffi绩:
"«score«endl;}
voidtotal();
staticfloataverage();
floatstudent:
:
sum=0.0;
intstudent:
:
count=0;
voidstudent:
:
total()
{
sum+=score;
}
floatstudent:
:
average()
{
returnsum/count;
I
intmain()
{
students[3]={student(1001,"三",87),student(1002,"0"),student(1003,"王五:
90)};
for(inti=0;i<3;i++)
(
s[i].total();
}
cout«"平均成缱:
,«student:
:
average()«endl;
return0;
#include
//include
//usingnamespacestd;
classTime
{
private:
inthour;
intminute;
intsecond;
public:
Time(inth=12,intm=0,ints=0)
{
hour=h;
minute=m;
second=s;
}
friendvoiddisplay(Time&);
voiddisplay(Time&t)
cout«t.hour«B时H«t.minuted分B«t.second«M秒M«endl;
intmain()
Timet,t1(13,12,22);display(t);display(tl);
return0;
)
13、
(1)
〃方法1:
多次重裁+
#include//include
//usingnamespacestd;
classplexprivate:
floatreal;
floatimage;
public:
plex(floatreal,floatimage)
{
this->real=real;
this->image=image;
1
Plex()
{
real=0;
image=0;
}
friendplexoperator+(plex&a,plex&b);
friendplexoperator+(plex&a,floatb);
friendplexoperator+ffloata,plex&b);
friendostream&ope「ator«(ostream&output,plexa);
friendistream&operator»(istream&input,plexa);
plexoperator+(plex&a,plex&b)
returnplex(a.real+b.real,a.image+b.image);
plexoperator+(plex&a,floatb)
returnplex(a.real+b,a.image);
plexoperator+(floata,plex&b)
returnplex(b.real+a,b.image);
ostream&ope「ator«(ost「eam&output,plexa)
if(a.image>0)
output«a.real«,1+ko.image^'i^endl;
else
output«a.real«a.image«'T«endl;
returnoutput;
istream&operator»(istream&input,plexa){
input»a.real»a.image;
returninput;
I
intmain()
{
plexa(3,4),b(1,2),c,d,e,f;
c=a+b;
d=a+5;
e=3+b;
cout«c«endl;
cin»f;
cout«f«endl;
return0;
)
〃方法2:
使用转换构造函数实现
#include
classplexprivate:
floatreal;
floatimage;
public:
plex(floatreal,floatimage){
this~>real=real;this->image=image;
}
Plex()
{
real=0;
image=0;
}
//定义转换构造函数
plex(floatr)
{
real=r;
image=0;
friendplexoperator+(plex&a,plex&b);
friendostream&ope「ator«(ostream&output,plexa);
friendistream&operator»(istream&input,plexa);
};
plexoperator+(plex&a,plex&b)
{
returnplex(a.real+b.real,a.image+b.image);
I
ostream&ope「ato「《(ost「eam&output,plexa)
{
if(a.image>0)
(
outputcca.realccVcca.imageccTccendl;
}
else
{
output«a.real«a.image«"iB«endl;
returnoutput;
istream&operator»(istream&input,plexa){
input»a.real»a.image;
returninput;
}
intmain()
{
plexa(3,4),b(1,2),c,d,e,f;
c=a+b;
d=a+5;
e=3+b;
cout«c«endl;
cin»f;
cout«f«endl;
return0;
}
(2)includeusingnamespacestd;
classTime
{public:
Time(){minute=O;sec=O;}
Time(intmjnts):
minute(m),sec(s){)
Timeoperator++();
Timeoperator++(int);
voiddisplay()(cout«minute«":
"«sec«endl;)
private:
intminute;
intsec;
I;