第二章复习题2含答案析构函数.docx
《第二章复习题2含答案析构函数.docx》由会员分享,可在线阅读,更多相关《第二章复习题2含答案析构函数.docx(23页珍藏版)》请在冰豆网上搜索。
第二章复习题2含答案析构函数
4、这题答案不完整,比较难,可以仔细做一下。
题目:
请补足date类和card的成员函数定义。
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
#include
usingnamespacestd;
classdate{
intyear;
intmonth;
intday;
public:
date(intYear=0,intMonth=0,intDay=0);//构造函数,给出初始的年月日
voidsetdate(intYear,intMonth,intDay);//设置年月日
intget_year();//获取年份
intget_month();//获取月份
intget_day();//获取日期
};
classcard{
intbook;//图书编号
intreader;//借阅者编号
dateborrow_day;//出借日期
intexpiry;//借阅期限
public:
card(intBook,intReader,dateBorrow_day,intExpiry=60);//构造函数
dateget_borrow_day();//获取出借日期
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;month=Month;day=Day;}
intdate:
:
get_year(){returnyear;}
intdate:
:
get_month(){returnmonth;}
intdate:
:
get_day(){returnday;}
card:
:
card(intBook,intReader,dateBorrow_day,intExpiry){
book=Book;reader=Reader;expiry=Expiry;
}
intcard:
:
get_book(){returnbook;}
intcard:
:
get_reader(){returnreader;}
intcard:
:
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:
"<cout<<"-----------------------------------------------------"<cout<"<cout<"<cout<"<cout<"<"<"<cout<"<"<"<cout<<"-----------------------------------------------------"<day.setdate(2012,12,6);//设置借书日期
cbook=100077;//图书者编号
cardc2(cbook,stu,day,30);//创建card对象c2
//以下打印借书卡c2信息
cout<<"借书卡c2:
"<cout<<"-----------------------------------------------------"<cout<"<cout<"<cout<"<cout<"<"<"<cout<"<"<"<cout<<"-----------------------------------------------------"<}
3、
题目:
声明复数类complex,并使用成员函数add实现复数加法,
并输出结果,注意虚部为负数和0时的输出。
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
usingnamespacestd;
/**********Program**********/
classComplex{
doubleR,I;
public:
Complex(doublea=0,doubleb=0){R=a;I=b;};
voidshow();
Complexadd(Complex);
};
ComplexComplex:
:
add(Complexs){
R+=s.R;
I+=s.I;
returnComplex(R,I);}
/**********End**********/
voidComplex:
:
show(){
if(I>0)
cout<elseif(I==0)
cout<else
cout<}
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;}
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
usingnamespacestd;
/**********Program**********/
classClock{
doublehour,minute,sec;
public:
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>=60)
{
minute=(int)minute%60;
hour++;
}
}
/**********End**********/
voiddisplay(Clockck)
{
cout<}
voidmain(void)
{
inti;
intINTERVAL;//耗时,单位为秒
INTERVAL=rand();
INTERVAL=rand();
Clockclock(9,55,0);
cout<<"起点=";display(clock);cout<for(i=1;i<=INTERVAL;i++)clock.go();
cout<<"终点=";display(clock);cout<cout<<"耗时"<}
1、
题目:
定义盒子Box类,要求具有以下成员:
可设置盒子形状;可计算盒子体积;可计算盒子的表面积
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
#include
usingnamespacestd;
/**********Program**********/
classBox{
doublex,y,z;
doubles,v;
public:
voidinit(doublea,doubleb,doublec);
voidvolue();
voidarea();
voidshow();
};
voidBox:
:
init(doublea,doubleb,doublec){
x=a;y=b;z=c;}
voidBox:
:
volue(){
s=2*x*y+2*x*z+2*y*z;}
voidBox:
:
area(){
v=x*y*z;}
/**********End**********/
voidBox:
:
show()
{cout<<"x="<cout<<"s="<
}
voidmain()
{Boxa;
a.init(2,3,4);
a.volue();
a.area();
a.show();
}
5、这题15分只得了13分,内容匹配率66%。
【程序设计】
---------------------------------------------------------
题目:
定义一个描述学生基本情况的类Student,数据成员包括学号、
C++成绩、英语和数学成绩,成员函数包括获取学号、求出总成绩和平均成绩,格式:
longgetID()
intsum()
doubleavg()
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
usingnamespacestd;
/**********Program**********/
classStudent{
longID;
intc1,c2,c3;
public:
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;}
/**********End**********/
voidmain(void)
{
Students(201211145,90,80,97);
cout<<"ID:
"<cout<<"\tThesumofsource:
"<cout<<"\tTheavgofsource:
"<}
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;
输出结果见图:
样张.JPG
-------------------------------------------------------*/
#include
usingnamespacestd;
classshape{
private:
intl,w,h;
public:
shape(int,int,int);
intis();
};
/**********Program**********/
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!
=0&&h!
=0)return1;
if((l==0&&w!
=0&&h!
=0)||(l!
=0&&w!
=0&&h==0)||(l!
=0&&w==0&&h!
=0))return2;
if((l==0&&w==0&&h!
=0)||(l!
=0&&w==0&&h==0)||(l==0&&w!
=0&&h==0))return3;}
/**********End**********/
voiddisplay(shapes)
{
switch(s.is()){
case1:
cout<<"这是柱体"<case2:
cout<<"这是长方形"<case3:
cout<<"这是线段"<case4:
cout<<"这是点"<}
}
voidmain(void)
{
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
-------------------------------------------------------*/
#include
usingnamespacestd;
/**********Program**********/
classDate{
intyear,month,day;
public:
Date(inta=0,intb=0,intc=0){year=a;month=b;day=c;};
voidshow();
intgetDay();
voidSetD(inta,intb,intc){year=a;month=b;day=c;};
};
intDate:
:
getDay(){
inti,day_sum;
intday_tab[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
day_sum=0;
for(i=1;iday_sum+=day;
if((year%4==0&&year%100!
=0||year%400==0)&&month>2)day_sum+=1;
returnday_sum;}
/**********End**********/
voidDate:
:
show()
{
cout<}
intmain()
{
Dated1(2009,2,1),d2;//d1为2009年2月1日
d1.show();
cout<d2.SetD(2012,3,1);//d2为2012年3月1日
d2.show();
cout<return0;
}
8、
定义一个点类Point包括x坐标和y坐标(int)。
定义一个圆类Circle,有数据成员半径
和表示圆心坐标的点类对象。
圆类成员函数包括构造函数、求面积的函数和输出显示圆心
坐标及圆半径的函数。
输出结果见样张.JPG
-------------------------------------------------------*/
#include
usingnamespacestd;
constdoublePI=3.14159;
/**********Program**********/
/**********End**********/
voidCircle:
:
show()
{
cout<<"圆心X坐标="<cout<<"圆半径="<}
intmain()
{
Pointp1(9,2),p2;//9为x坐标,2为y坐标
Circlec1(p1,7),c2;//7为半径p1为圆心点
c1.show();
cout<<"圆的面积="<p2.SetP(1,1);//改变圆心坐标
c2.SetCC(p2,4);//以p2为圆心坐标,改变c2的半径
c2.show();//显示c2
cout<<"圆的面积="<return0;
}