a.sfunc(a);
}
Result1=200
Result2=201
Result3=125
五、编程题
5.1构造一个日期时间类(Timedate),数据成员包括年、月、日和时、分、秒,函数成员包括设置日期时间和输出时间,其中年、月用枚举类型,并完成测试(包括用成员函数和用普通函数)。
5.2定义一个日期类Date,具有年月日等数据成员,显示日期、加减天数等函数成员。
注意需要考虑闰年。
5.3定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。
要求定义构造函数(以半径为参数,默认值为0,周长和面积在构造函数中生成)和复制构造函数。
5.4设计一个学校在册人员类(Person)。
数据成员包括身份证号(IdPerson)、姓名(Name)、性别(Sex)、生日(Birth-day)和家庭住址(HomeAddress)。
成员函数包括人员信息的录入和显示,还包括构造函数与复制构造函数。
设计一个合适的初始值。
5.5设计如下类:
(1)建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。
(2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
(3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。
5.6建立一个分数类Fraction。
分数类的数据成员包括分子和分母。
成员函数包括构造函数、复制构造函数。
构造函数要对初始化数据进行必要的检查(分母不能为0)。
将分数显示成“a/b”形式的输出函数。
成员函数包括约分、通分、加、减、乘、除、求倒数、比较大小、显示和输入。
完成以上所有成员函数并在主函数中进行检验。
//5.1Timedate.cpp
#include
usingnamespacestd;
enumYear{Y1992,Y1993,Y1994,Y1995};
enumMonth{Jan,Feb,Mar,Apr,May,Jun};
classTimedate
{
Yearyear;
Monthmonth;
intday,hour,minute,second;
public:
voidsetTimedate(Year,Month,int,int,int,int);
voiddisplay();
};
voidTimedate:
:
setTimedate(Yeary,Monthm,intd,inth,intmi,ints)
{
year=y;
month=m;
day=d;
hour=h;
minute=mi;
second=s;
}
voidTimedate:
:
display()
{
cout<<"time:
"<"<"<}
voidmain()
{
Timedatetimedate;
timedate.setTimedate(Y1992,Jan,33,12,9,9);
timedate.display();
}
//5.2Date.cpp
#include
usingnamespacestd;
classDate
{
intyear,month,day;
public:
voiddisplay();
voidsetTate();
intinputDay();
voidsetDay(intdays);
intisLeapyear();
};
voidDate:
:
display()
{
cout<}
voidDate:
:
setTate()
{
cout<<"InputDate(year,month,day):
";
cin>>year>>month>>day;
}
intDate:
:
inputDay()
{
intdays;
cout<<"Afterdays:
";
cin>>days;
returndays;
}
voidDate:
:
setDay(intdays)
{
intflag=0;
day=day+days;
if(isLeapyear())
flag=1;
while(day>28)
{
if(month%2!
=0&&month<8||month%2==0&&month>7)
{
if(day<=31)
break;
else
{
day=day-31;
month=month+1;
if(month>12)
{
month=month-12;
year=year+1;
}
}
}
elseif(month==4||month==6||month==9)
{
if(day<=30)
break;
else
{
day=day-30;
month=month+1;
}
}
elseif(month=2)
{
if(flag=1)
{
if(day<=29)
break;
else
{
day=day-28;
month=month+1;
}
}
}
else
break;
}
}
intDate:
:
isLeapyear()
{
if(year%400==0||year%100!
=0&&year%4==0)
return1;
else
return0;
}
voidmain()
{
Datedate;
date.setTate();
date.display();
date.setDay(date.inputDay());
date.display();
}
//5.3Circle.cpp
#include
usingnamespacestd;
constdoublePI=3.14156;
classCircle
{
doubleradius,circumference,area;
public:
Circle(double);
Circle(constCircle&);
//doubleoutputRadius();
voiddisplay();
};
Circle:
:
Circle(doubler=0)
{
radius=r;
area=PI*radius*radius;
circumference=2*PI*radius;
}
Circle:
:
Circle(constCircle&circl)
{
radius=circl.radius;
area=circl.area;
circumference=circl.circumference;
}
voidCircle:
:
display()
{
cout<<"radius="<cout<<"area="<
cout<<"circumference="<}
voidmain()
{
doubler;
cin>>r;
Circlecircle(r);
circle.display();
}