学年第2学期西南交大面向对象程序设计主观题作业.docx
《学年第2学期西南交大面向对象程序设计主观题作业.docx》由会员分享,可在线阅读,更多相关《学年第2学期西南交大面向对象程序设计主观题作业.docx(15页珍藏版)》请在冰豆网上搜索。
学年第2学期西南交大面向对象程序设计主观题作业
第一次作业
二、主观题(共9道小题)
22.在C++中,当用class定义一个类时,数据成员和成员函数的默认访问权限是【30】,而struct中成员的默认访问权限是【31】
参考答案:
30)私有(或者private)31)公有(或者public)
23.编写程序声明类Student,有数据成员、学号、成绩,定义函数成员用于返回各数据成员信息,定义对象数组,实现10个学生的分数录入及平均分计算。
参考答案:
^include
classStudent
{public:
floatgetScore():
private:
charname[10];
longnum;
floatscore;
};
类的成员函数的定义和主函数部分自己完成
24.类的继承是面向对象程序设讣中的重要机制,继承方式有三种,分别是:
【1】、【2】和【3】°
参考答案:
1)公有继承2)私有继承3)受保护继承
25.带有纯虚函数的类是【4】。
参考答案:
4)抽象类
26.在C卄程序中,动态建立和删除堆对象是采用【5】和【6】这两个运
算符来实现的。
参考答案:
5)new6)delete
27.假定AB为一个类,则执行〃ABa[9];〃语句时,系统自动调用该类构造函数的次数为【7】.
参考答案:
7)9
28.当一个类对象被创建时,系统将自动调用该类的构造函数,而【8】函数是在对象的生存期即将结束的时刻由系统自动调用的。
参考答案:
8)析构
29.类中具有相似功能的不同函数使用同一个名称来实现,这称为【9】。
面向对象的多态性可以分为四类,分别是:
参数多态、强制多态、【10】和
[H]O
参考答案:
9)多态10)重载11)包含
30.C++程序也需要有主函数的入口,必须而且只能是一个名为的函数【12】参考答案:
12)main
第二次作业
二、主观题(共15道小题)
g算术表达式;-b+舶的c语言表达式是;【13】
算术表达式:
I护-他I的C语言表达式是:
【14】
(1)s=a+b/2;则s=【21】;a
(2)s=a>b?
(a-b):
(a+b);则s=【22】;o
(引s=102%b+a++5则*【23】;e【24】
12.⑷s=b&&!
(c>=a)&&(a<=10)||b;则沪[25]m
参考答案:
21)1022)323)1024)925)1
13.面向对象的程序设计有四大特征,是【26】、【27】、【28】、【29】。
参考答案:
26)-29)抽象封装继承多态(答案顺序可交换)
14.
Sinclude
intarea(int1=5,intw二5)
{
returnl*w;
}
voidmain()
{
cout«area()<;
cout«area(10,2)<;
cout«area
(2)<;
}
参考答案:
结果:
25
20
10
考察知识点:
带默认形参值的函数。
默认形参值必须按照从右向左顺序定义。
调用时,实参按从左向右顺序初始化形参)
本题招关知识点「构造函数>
include<迫.炭网切
classclock
public:
卩
clockfmtnewH,intnewNLmtnewS),〃构造函数
voidsetTime(inlnewH,intnewM,intne^vS)*
W-ZAAA/v*v\A/V/-AWvWSAAV-^-ZSWZZ,2Z74222
{hour=navH;mirLUte=nwivi;second=newS;}<-'
»V*/WWW/
voidshowTime()Q
W"・Z•/•/
{cout«hour«"、》«minute«*"«sec&fLd<0VvVvVrA\AAAA^-X
privates2
inthour?
minute^
second;
^ock^JM(mtn^H,intnewM,intn^S)
main()卩
void
{clockmyclock(0,0,0)?
2myclock.showyTime();p>AAmyclock.setTime(11,1412);“
妙如城删T醱();卩
15.}a
参考答案:
运行结果:
0:
0:
0
11:
11:
12
classpoint.匸
public;-
point.(M-xx=05-tyy=0)t-
^1-3-T
poB-b(Polinif-
wo.d翼m()七
〔couTrA-ccL字AACountPA人endh)t-private;
poB-t:
P05-二PG-S-L0P)
t
COUilLP十+5f-
5-Lpoint.”»countpHFswAWYWWYYVvoidmain()t(point.A(495)3tcoutxA二p・A八endhcA.metc();poil=B《A);go&a<0a人endk>ss«o>cssssx
B.getc(;t
16・)t
>
Objectid“1
B”
Objectid:
2
继孚与派生过程中构造函数的调用心
include仙挠
classB2(public:
卩
Bl(inti){cout«"cobstructingBl"«i«endl;}
、、、小2^250VW/WW*
classB2a{public:
卩
B2(iiitj){cout<}
};3
classB3“(public:
卩
B3(){cout«,,c&nstmctingB3,,«,,*,,«end.l;}Q
};则
classC:
卩讪lkBl.irul)licB2・publicB3〃三个
{public:
卩
C==C
V^AZS/
(b)2
BL(<),ift?
idberB2(n),lft&inb^rBl(d),B2
piiv^ate:
卩
BlmembeiBb"
B2manJb“B5«'
B3mQmJ)QL*3;
V7)i(lrnaiiiiC){Col)j(1,2»3,4);}□参考答繁:
结果:
constructingBl3constructingB22constructingB3*constructingBl4
constructingB21constructingB3*下面程序的运行结果是⑤•2deludeu切煎卿氏U”
如fuel(焕谕诚cK/mt妙2
cp=x*卅y*y;Q
voidmain.()<-*
inta=4,b=3,c=5,d=6;卩
fu.ncl(a,b,c,d)>'
cout<18.H
参考答案:
运行结果:
56
考察知识点:
参数的传递,本题传递了实参的值
19.下面程序的运行结果是。
#include
intfund(intx,inty,int*cp,int*dp)
{
*cp=x*x+y*y;
*dp二x*x_y*y;
}
voidmain()
{
inta=4,b—S,c二5,d=6;
fund(a,b,&c,&d);
cout«>
}
参考答案:
运行结果:
257
考察知识点:
参数的传递,本题传递了实参的地址
20.该程序的输出是
^include"stdio.h”
voidmain()
{
chara[40]=ngoodnight畀,*p;
for(p=a;*p!
二'a";p++)putchar(水p一32);
}
参考答案:
运行结果:
GOODNIGHT
考察知识点:
字符串的处理一一大小写字母的转换
本题相关知识点:
派生类成员的标识右访问C作用域分辨符的便用)include可女威购功加屮
class
2
public:
卩
诞期;卩
voidfun(){cout«,,ftiernberofBln«endl?
}Q
}■p
classB2卩
public:
Q
intnv;4
WX0WXrt
void伽(、磁谢“血舉敢:
of时*则!
;”
};J
classD1:
publicB1,publicB2a
g
public:
“
迫t卿Q
wid.fim(){ggygcflft&mbeT
参考答案:
运行结果:
memberofDImemberofBlmemberofB2
1
2
3
分析:
存中nv有三个拷贝,fun也有三个拷贝。
22.考察知识点:
静态局部变量
nclude
intf(int):
intmain()
{inti;
for(i=l;i<=5;i++)
cout<«,J;&NBSP;&NBSP;
returnO;
}
intf(inti)
{staticintk=l;
k+二1;
returnk;
}
参考答案:
运行结果:
23456
23.下面程序的运行结果是。
Sinclude
voidmain()
{
for(i=l;i<10;i++)
{
if(i%3=0)continue;
cout<;
}
}
参考答案:
运行结果:
124578
考察知识点:
continue的使用
第三次作业
一、主观题(共5道小题)
L声明一个rectangle和circle类,rectangle和circle类都有getArea()函数用于计算矩形(retangle)对象和圆形(circle)对象的而积,在main中初始化一个矩形类对象和一个圆形类对象并利用getArea函数求岀面积。
参考答案:
#include
classcircle
{public:
circle(floatr){radius二r;}
floatgetArea();
private:
floatradius;
};
floatcircle:
:
getAreaO
{return3・14水radius^radius;}
classrectangle
{public:
rectangle(float11,floatwl){1=11;w=wl)
floatgetAreaO;
private:
float1,w;
};
floatrectangle:
:
getAreaO
{returnl*w;}
voidmain()
{circlecirclel(3);
rectanglereel(3,5);
cout«/>
cout«/>
)
2.定义Boat与Car两个类,二者都有weight属性,定义_•者的一个友元函数totalWeight(),计算二者的重量和。
苗“elude^lostream^
classBoat*-1
(public:
a
Boat(doublew){weight=\^}“
FrienddoubletotalWeid.it(BoatCarprivatesa
doubleweight?
d
};A
classCar"
(public:
*
Car(doublew)(weight=^Y,)Q
FiwiwldoubletotAlWe-iglit(BoatC^r
private:
a
doubleweight;卩
};3
doubletotnlW^idit(Boat&bC?
w&b)*
〔retiuiiA-wei^lit+b
voidtmin0u
2
Boat莎或诚:
弼汁
Ch◎或曲50);屮
参考答案:
3.定义point类来描述平面上的点,包含私有数据成员x和y。
定义友元函数Distance计算两点距离
参考答案:
#ineludePoint(doublesdoubleyy){}
doubleGetz();丄
\AA*A••人
FiieivldoubleDKhme(Point&九Point<■*
private:
*
doublez,y;□
};卩
doublePoint:
:
Getn()*»
WhAWVv
(return}Q
doubleDistance(Pointk^a>Point&b)卩
(doubledz=a.x-b.x;
、V-ZA*vWv*vWvV-z
doubledy=a.y-b.y;“
returnsqrt{Pointpl(3.0,4.0),p2(6.0,8.0)5Q
pl.Getzy():
Q
p2.Getzy(h卩
doubled=DKtAiwe(pl,p2);心
滋意,Distance是一个函数,而不是Spoint的公有函数,所以这里直接调用
cout<<,,Distanceis"«d«endl;亠
\ZVWS/V**>WWh/
4.定义复数类,重载+,水为复数类的成员函数,实现复数类对象的+,*运算。
参考答案:
細clud*织或^:
心classcomplex〃复数类声明a
2public:
3
complex(d-outiler=0.0,doublei=0.0)p(real^nmg=i;}〃构造函数〜complezoperator+(complexc2)?
〃运算符十重载为成员函数~
complexoperator*(complexc2);voiddisplay()?
/简出复数/
private:
佩有数据成员Q
complexcomfe;;operator十(complexc2)“
returncomplex(real+c2.real,imag+c2.imag);complexcomplex:
:
o-perator冰(comples:
c2)丄
丄V-AAAA^Ka/vV-/丄儿
c3.display();心
c3n严c2:
"便用重载运算符完成复数乘法acout«,,c3=cPc2=,,5屮
c3.display();a
5.编写程序声明类Point,有数据成员X,Y,为其定义友元函数实现重载+。
includea
classPoint*-'
(public:
a
Point(double忍doubleyy)Q
〔mx;7=溉)屮
doubleGetzy();□
Friendoperator+(Point&a,Point&b);〃声明友元函数
private;卩
doubley;2
};d
doublePoint:
:
Get^()>
{cout«x«ur«y«^.dl;}屮
Pointoperator+(Poiiit&;vPoint&b)Q
依(umPoiiM瞬也西加也於;W
voidmain()』
{Pointpl(3.0,4.0),p2(6.0,8.0)卫3;u
pl.Get繆()?
Q
p2.Getxy();卩
p3=pl+p2;卩
〃注意,+不是point咸员函数,所以可直接调用心
p3.Getny();心
}“
卩
运础果…
3.0,4.2
6.0,8.0^
参考答案:
90123
第四次作业
一、主观题(共2道小题)
1.编写程序声明类Student,有数据成员、学号、成绩,定义函数成员用于返回各数据成员信息,定义对象数组,实现10个学生的分数录入及平均分计算。
参考答案:
#include
classStudent
{public:
floatgetScore();
private:
charname[10];
longnum;
floatscore;
};
类的成员函数的定义和主函数部分自己完成
2.声明一个基类Shape,在此基础上派生出Rectangle和Circle,二者都有GetArea()函数计算对象面积。
参考答案:
classShape{
public:
floatgetArea(){};
};
classcircle:
publicShape
{public:
circle(floatr){radius=r;}
floatgetArea(){return3.14水r&dius*radius;}
private:
floatradius;
};
classrectangle:
publicShape
{public:
rectangle(float11,floatwl){1=11;w=wl)
floatgetArea();{returnl*w;}
private:
float1,w;
);
voidmain()
{
circlecirclel(3);
rectanglereel(3,5):
cout