c++实验报告 类的组合及应用.docx

上传人:b****8 文档编号:23883273 上传时间:2023-05-21 格式:DOCX 页数:12 大小:67.59KB
下载 相关 举报
c++实验报告 类的组合及应用.docx_第1页
第1页 / 共12页
c++实验报告 类的组合及应用.docx_第2页
第2页 / 共12页
c++实验报告 类的组合及应用.docx_第3页
第3页 / 共12页
c++实验报告 类的组合及应用.docx_第4页
第4页 / 共12页
c++实验报告 类的组合及应用.docx_第5页
第5页 / 共12页
点击查看更多>>
下载资源
资源描述

c++实验报告 类的组合及应用.docx

《c++实验报告 类的组合及应用.docx》由会员分享,可在线阅读,更多相关《c++实验报告 类的组合及应用.docx(12页珍藏版)》请在冰豆网上搜索。

c++实验报告 类的组合及应用.docx

c++实验报告类的组合及应用

昆明理工大学信息工程与自动化学院学生实验报告

(201—201学年第二学期)

课程名称:

C++程序设计开课实验室:

年月日

年级

学号

姓名

成绩

实验项目名称

类的组合及应用

指导教师

教师评语

 

教师签名:

年月日

题目1:

在cdate类中增加日期相加和相减的功能,如:

在日期上加上XX天,得到一个新日期;

实现两个日期相减,两个日期之间相距多少天;

日期减去XX天后是什么日期。

源程序1

/******cdate.h******/

#ifndefCDATE

#defineCDATE

//class1

classcdate

{

public:

cdate(){year=1900;month=1;day=1;};//初始化

cdate(intyear_get,intmonth_get,intday_get);//赋值

voidnext();

voidset();

voiddisplay();

intget_year();

intget_month();

intget_day();

voiddate_count_date();

//private:

intyear,month,day,d,other;

};//类定义

//class2继承class1

classcdate_count:

publiccdate

{

public:

//cdate_count();

intcount(inty,intm,intd1);

intget_year_number(intw,inti);

intget_month_number(intx,intj);

intget_day_number(inty,intk);

voiddisplay();

voidset_today();

private:

inty,m,d1,cha;

intyear_today,month_today,day_today;

};

#endif

/******cdate.cpp******/

#include"cdate2.h"

#include

#include

usingnamespacestd;

cdate:

:

cdate(intyear_get,intmonth_get,intday_get)

{

year=year_get;

month=month_get;

day=day_get;

}//赋值

voidcdate:

:

next()

{

day+=1;

}//加一

voidcdate:

:

set()

{

cout<<"pleaseenteryear"<

cin>>year;

if((year%4==0)||(year%400==0))other=1;

elseother=0;

do{

cout<<"pleaseentermonth"<

cin>>month;

}

while(month<1||month>12);

switch(month)

{

case1:

d=31;break;

case2:

d=28+other;break;

case3:

d=31;break;

case4:

d=30;break;

case5:

d=31;break;

case6:

d=30;break;

case7:

d=31;break;

case8:

d=31;break;

case9:

d=30;break;

case10:

d=31;break;

case11:

d=30;break;

case12:

d=31;break;

}

do

{

cout<<"pleaseenterday"<

cin>>day;

}

while(day>d||day<1);

}//设定

voidcdate:

:

date_count_date()

{}cdate;

voidcdate_count:

:

set_today()

{

cout<<"pleaseenteryear_today"<

cin>>year_today;

if((year%4==0)||(year%400==0))other=1;

elseother=0;

do{

cout<<"pleaseentermonth_today"<

cin>>month_today;

}

while(month<1||month>12);

switch(month)

{

case1:

d=31;break;

case2:

d=28+other;break;

case3:

d=31;break;

case4:

d=30;break;

case5:

d=31;break;

case6:

d=30;break;

case7:

d=31;break;

case8:

d=31;break;

case9:

d=30;break;

case10:

d=31;break;

case11:

d=30;break;

case12:

d=31;break;

}

do

{

cout<<"pleaseenterday_today"<

cin>>day_today;

}

while(day>d||day<1);

}//设定今天

intcdate_count:

:

get_year_number(intw,inti)

{

y=w-i;

returny;

}

intcdate_count:

:

get_month_number(intx,intj)

{

m=x-j;

m=(m>=0)?

m:

-m;

returnm;

}

intcdate_count:

:

get_day_number(inty,intk)

{

d1=y-k;

d1=(d1>=0)?

d1:

-d1;

returnd1;

}

intcdate_count:

:

count(inty,intm,intd1)

{

y=get_year_number(year_today,year);

m=get_month_number(month_today,month);

d1=get_day_number(day_today,day);

cha=365*y+31*m+d1;

returncha;

}

voidcdate_count:

:

display()

{

cha=count(y,m,d1);

cout<<"两个日期相差的天数为:

"<

}

/******main.cpp******/

#include"cdate2.h"

#include

usingnamespacestd;

voidmain()

{

cdate_countcha;

cout<<"pleaseenterthedateoftoday"<

cha.set_today();

cout<<"pleaseenterthedateofyouwanttosubtract:

"<

cha.set();

cha.display();

}

运行结果截图

 

题目2:

定义一个学生类,数据有姓名(用指针实现)、学号、性别、出生日期(cdate类型),成绩,班排名;求一个班10名学生的平均分和排名。

源程序2

#ifndefSTUDENT_H

#defineSTUDENT_H

#include

usingnamespacestd;

classcdate

{

public:

intyear;

intmonth;

intday;

voidset(intyy,intmm,intdd){

year=yy;month=mm;day=dd;}

};

classstudent

{

private:

charname[10];

charsex;//m代表男生,f代表女生

intnumber;

cdatebirth;

doublescore;

intrank;

public:

student()

{}

voidsets()

{intyy,mm,dd;

cin>>name>>sex>>number>>score>>yy>>mm>>dd;

birth.set(yy,mm,dd);

rank=1;

}

doublegetscore()

{

returnscore;

}

voidsetrank()

{

rank++;

}

voidshow()

{

cout<

"<

}

};

#endif

/******main.cpp******/

#include

usingnamespacestd;

intmain()

{

inti,aver=0,j;

studentstu[10];

for(i=0;i<10;i++)

stu[i].sets();

for(i=0;i<10;i++)//排名

{

for(j=0;j<10;j++)

{

if(stu[j].getscore()

stu[j].setrank();

}

}

for(i=0;i<10;i++)

{

aver+=stu[i].getscore();

stu[i].show();

}

cout<<"Theaverageis:

"<

return0;

}

 

运行结果截图

 

思考问题

1.什么是面向对象,面向对象有哪些特征。

答:

所谓面向对象,就是以对象的观点来分析现实世界中的问题。

从普通人认识世界的观点出发,把事物归类、综合,提取共性并加以描述。

面向对象的特点有抽象、封装和信息隐藏、继承和多态。

2.什么是构造和析构函数,有什么特点,它们可以重载吗

答:

构造函数是一个函数名和类名相同的类成员函数,当这个类的对象被创建时,构造函数会被自动调用。

构造函数可以重载。

析构函数名也应与类名相同,只是在函数名前面加一个波浪符~,它不能带任何参数,也没有返回值(包括void类型)。

只能有一个析构函数,不能重载。

3.Const修饰符在类定义中有什么作用。

答:

const修饰符表示该参数在成员函数内不会,也不能被修改,成员函数修饰为const时,只能读取成员变量,不能修改。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 外语学习 > 英语考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1