第二章复习题2含答案析构函数.docx
- 文档编号:8024555
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:23
- 大小:198.25KB
第二章复习题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;i day_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; }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第二 复习题 答案 函数