第二章复习题2含答案析构函数Word文档下载推荐.docx
《第二章复习题2含答案析构函数Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《第二章复习题2含答案析构函数Word文档下载推荐.docx(23页珍藏版)》请在冰豆网上搜索。
dateget_return_day();
//获取归还日期,归还日期=出借日期+借阅期限
intget_book();
//获取图书编号
intget_reader();
//获取借阅者编号
intget_expiry();
//获取借阅期限
/**********Program**********/
date:
:
date(intYear,intMonth,intDay){year=Year;
month=Month;
day=Day;
}
voiddate:
setdate(intYear,intMonth,intDay){year=Year;
intdate:
get_year(){returnyear;
}
get_month(){returnmonth;
get_day(){returnday;
card:
card(intBook,intReader,dateBorrow_day,intExpiry){
book=Book;
reader=Reader;
expiry=Expiry;
intcard:
get_book(){returnbook;
get_reader(){returnreader;
get_expiry(){returnexpiry;
datecard:
get_borrow_day(){
/**********End**********/
voidmain(){
intstu=2012678;
intcbook=100034;
dateday(2012,1,31);
//出借日期
cardc1(cbook,stu,day);
//创建card对象c1
//以下打印借书卡c1信息
cout<
<
"
借书卡c1:
"
endl;
-----------------------------------------------------"
setw(10)<
'
*'
图书号:
c1.get_book()<
借书人:
c1.get_reader()<
借阅期限:
c1.get_expiry()<
出借日期:
c1.get_borrow_day().get_year()<
c1.get_borrow_day().get_month()<
c1.get_borrow_day().get_day()<
归还日期:
c1.get_return_day().get_year()<
c1.get_return_day().get_month()<
c1.get_return_day().get_day()<
day.setdate(2012,12,6);
//设置借书日期
cbook=100077;
//图书者编号
cardc2(cbook,stu,day,30);
//创建card对象c2
//以下打印借书卡c2信息
借书卡c2:
c2.get_book()<
c2.get_reader()<
c2.get_expiry()<
c2.get_borrow_day().get_year()<
c2.get_borrow_day().get_month()<
c2.get_borrow_day().get_day()<
c2.get_return_day().get_year()<
c2.get_return_day().get_month()<
c2.get_return_day().get_day()<
3、
声明复数类complex,并使用成员函数add实现复数加法,
并输出结果,注意虚部为负数和0时的输出。
classComplex{
doubleR,I;
Complex(doublea=0,doubleb=0){R=a;
I=b;
voidshow();
Complexadd(Complex);
ComplexComplex:
add(Complexs){
R+=s.R;
I+=s.I;
returnComplex(R,I);
voidComplex:
show(){
if(I>
0)
cout<
R<
+"
I<
i"
elseif(I==0)
else
-"
-I<
voidmain()
{
Complexa(3,4),b(5,6),c;
c=a.add(b);
//c=a+b
c.show();
2、
有一个Time类,包含数据成员hour(小时)、minute(分)和sec(秒),
定义三个获取数据成员的成员函数和一个模拟秒表的函数成员go(每调用一次go走一秒),
格式:
voidgo(void)
doublegetHour(void){returnhour;
}
doublegetMinute(void){returnminute;
doublegetSec(void){returnsec;
classClock{
doublehour,minute,sec;
Clock(doubleh=0,doublem=0,doubles=0);
voidgo(void);
doublegetHour(void){returnhour;
doublegetMinute(void){returnminute;
doublegetSec(void){returnsec;
Clock:
Clock(doubleh,doublem,doubles)
hour=h;
minute=m;
sec=s;
voidClock:
go()
sec++;
if(sec>
=60)
{
sec=(int)sec%60;
minute++;
if(minute>
minute=(int)minute%60;
hour++;
voiddisplay(Clockck)
ck.getHour()<
点"
ck.getMinute()<
分"
ck.getSec()<
秒"
;
voidmain(void)
{
inti;
intINTERVAL;
//耗时,单位为秒
INTERVAL=rand();
Clockclock(9,55,0);
起点="
display(clock);
for(i=1;
i<
=INTERVAL;
i++)clock.go();
终点="
耗时"
INTERVAL<
1、
定义盒子Box类,要求具有以下成员:
可设置盒子形状;
可计算盒子体积;
可计算盒子的表面积
cmath>
classBox{
doublex,y,z;
doubles,v;
voidinit(doublea,doubleb,doublec);
voidvolue();
voidarea();
voidBox:
init(doublea,doubleb,doublec){
x=a;
y=b;
z=c;
volue(){
s=2*x*y+2*x*z+2*y*z;
area(){
v=x*y*z;
voidBox:
show()
{cout<
x="
x<
y="
y<
z="
z<
s="
s<
v="
v<
{Boxa;
a.init(2,3,4);
a.volue();
a.area();
a.show();
5、这题15分只得了13分,内容匹配率66%。
【程序设计】
---------------------------------------------------------
定义一个描述学生基本情况的类Student,数据成员包括学号、
C++成绩、英语和数学成绩,成员函数包括获取学号、求出总成绩和平均成绩,格式:
longgetID()
intsum()
doubleavg()
classStudent{
longID;
intc1,c2,c3;
Student(longa=0,intb=0,intc=0,intd=0){ID=a;
c1=b;
c2=c;
c3=d;
longgetID();
intsum();
doubleavg();
longStudent:
getID(){
returnID;
intStudent:
sum(){
returnc1+c2+c3;
doubleStudent:
avg(){
return(c1+c2+c3)/3;
Students(201211145,90,80,97);
ID:
s.getID()<
\tThesumofsource:
s.sum()<
\tTheavgofsource:
s.avg()<
6、
定义shape类,有三个表示长度的整型数据成员,分别为l、w、h。
编一个基于对象的程序,写一个成员函数is,可判定其形状:
当l、w、h均不为0时,判定形状为柱体,返回值为1;
当l、w、h仅有一个为0时,判定形状为长方形,返回值为2;
当l、w、h仅有一个不为0时,判定形状为线段,返回值为3;
当l、w、h均为0时,判定形状为点,返回值为4;
classshape{
private:
intl,w,h;
shape(int,int,int);
intis();
shape:
shape(inta,intb,intc){l=a;
w=b;
h=c;
intshape:
is(){if(l==0&
&
w==0&
h==0)return4;
if(l!
=0&
w!
h!
=0)return1;
if((l==0&
=0)||(l!
h==0)||(l!
=0))return2;
h==0)||(l==0&
h==0))return3;
voiddisplay(shapes)
switch(s.is()){
case1:
这是柱体"
break;
case2:
这是长方形"
case3:
这是线段"
case4:
这是点"
shapemy1(1,2,3);
display(my1);
shapemy2(1,0,2);
display(my2);
shapemy3(0,0,1);
display(my3);
shapemy4(0,0,0);
display(my4);
7、
定义一个日期类Date,包含年、月、日三个数据成员(int),定义带有3个参数的构造函数,
以及一个求日期是当年的第几天的成员函数和输出日期的成员函数,
日期的显示格式为年/月/日。
编写主函数进行测试。
(每年各月天数分别为31,28,31,30,31,30,31,31,30,31,30,31,闰年2月为29天,
闰年的条件year%4==0&
year%100!
=0)||year%400==0))
输出结果见样张.JPG
classDate{
intyear,month,day;
Date(inta=0,intb=0,intc=0){year=a;
month=b;
day=c;
intgetDay();
voidSetD(inta,intb,intc){year=a;
intDate:
getDay(){
inti,day_sum;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
day_sum=0;
month;
i++)day_sum+=day_tab[i];
day_sum+=day;
if((year%4==0&
=0||year%400==0)&
month>
2)day_sum+=1;
returnday_sum;
/**********End**********/
voidDate:
year<
/"
month<
day<
intmain()
Dated1(2009,2,1),d2;
//d1为2009年2月1日
d1.show();
d1.getDay()<
d2.SetD(2012,3,1);
//d2为2012年3月1日
d2.show();
d2.getDay()<
return0;
8、
定义一个点类Point包括x坐标和y坐标(int)。
定义一个圆类Circle,有数据成员半径
和表示圆心坐标的点类对象。
圆类成员函数包括构造函数、求面积的函数和输出显示圆心
坐标及圆半径的函数。
constdoublePI=3.14159;
voidCircle:
圆心X坐标="
p1.getX()<
圆心Y坐标="
p1.getY()<
圆半径="
radius<
Pointp1(9,2),p2;
//9为x坐标,2为y坐标
Circlec1(p1,7),c2;
//7为半径p1为圆心点
c1.show();
圆的面积="
c1.getArea()<
p2.SetP(1,1);
//改变圆心坐标
c2.SetCC(p2,4);
//以p2为圆心坐标,改变c2的半径
c2.show();
//显示c2
c2.getArea()<