b=mm;
c=ss; }
void Timedate::putdate(YR a,MT b,int c){ year=a;
month=b; date=c;
}
void Timedate::puttime(int a,int b,int c){
hh=a; mm=b; ss=c;
}
void Timedate::list(){//成员函数 }
cout<<\switch(year){
case Y2000:cout<<\case Y2001:cout<<\case Y2002:cout<<\case Y2003:cout<<\case Y2004:cout<<\case Y2005:cout<<\}
switch(month){//,,,,,,,,
case Jan:cout<<'/'<<\case Feb:cout<<'/'<<\case Mar:cout<<'/'<<\case Apr:cout<<'/'<<\case May:cout<<'/'<<\case Jun:cout<<'/'<<\case Jul:cout<<'/'<<\case Aug:cout<<'/'<<\case Sep:cout<<'/'<<\case Oct:cout<<'/'<<\case Nov:cout<<'/'<<\case Dec:cout<<'/'<<\}
cout<<'/'< cout<<\cout< void show(Timedate &td){//普通函数,体会两者的不同 YR year; MT month; int date,hh,mm,ss; td.getdate(year,month,date); td.gettime(hh,mm,ss); cout<<\switch(year){ case Y2000:cout<<\case Y2001:cout<<\case Y2002:cout<<\case Y2003:cout<<\case Y2004:cout<<\case Y2005:cout<<\} switch(month){//,,,,,,,, case Jan:cout<<'/'<<\case Feb:cout<<'/'<<\case Mar:cout<<'/'<<\case Apr:cout<<'/'<<\case May:cout<<'/'<<\case Jun:cout<<'/'<<\case Jul:cout<<'/'<<\case Aug:cout<<'/'<<\case Sep:cout<<'/'<<\case Oct:cout<<'/'<<\case Nov:cout<<'/'<<\case Dec:cout<<'/'<<\} cout<<'/'< cout<<\ cout< } int main(int argc, char* argv[]){ } Timedate A(Y2004,Mar,3),B; A.list(); B.list(); B.putdate(Y2005,Oct,18); B.puttime(17,30,00); B.list(); show(B); return 0; 5.2 定义一个日期类Date,具有年月日等数据成员,显示日期、加减天数等函数成员。注意需要考虑闰年。 #include int year,month,day; static const int days[]; bool LeapYear(); bool EndofMonth(); public: Date(int=1900,int=1,int =1); void Increment(int ); void Decrement(int); void SetDate(int,int,int); void Print(); }; const int Date::days[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; Date::Date(int y,int m,int d){ SetDate(y,m,d); } void Date::SetDate(int y,int m,int d){ year=(y>=1900 && y<=9999)?y:1900; } bool Date::LeapYear(){ return ((year@0 == 0) || (year%4==0 && year0!=0))? true:false; } bool Date::EndofMonth(){ } void Date::Increment(int n){ int i; for(i=1;i<=n;i++) if(month==2 && LeapYear()) return day==29; else return day==days[month]; month=(m>=1 &&m<=12)?m:1; if(month==2 && LeapYear()) day=(d>=1 && d<=29)?d:1; else day=(d>=1 && d<=days[month])?d:1; } } if(EndofMonth() && month==12){ year++; month=day=1; } else if(EndofMonth()){ month++;day=1; } else day++; void Date::Decrement(int n){ int i; for(i=1;i<=n;i++) if(day==1){ if(month==1){ } year--; month=12; day=31; else if(month==3){ day=LeapYear()?29:28; month=2; } else day=days[--month]; } else day--; void Date::Print(){ } cout< void main(){ Date d1(2005,1,4),d2(2004,12,27); d1.Print(); d1.Decrement(4); d1.Print(); d2.Print(); d2.Increment(70); d2.Print(); } 5.3 定义一个圆类(Circle),属性为半径(radius)、圆周长和面积,操作为输入半径并计算周长、面积,输出半径、周长和面积。要求定义构造函数(以半径为参数,默认值为0,周长和面积在构造函数中生成)和复制构造函数。 #include const double PI=3.1415; using namespace std; class Circle{ double radius,length,area; public: Circle(double r=0){ } Circle(Circle& c){ radius=c.radius ; length=c.length ; area=c.area ; setr(r); length=2*PI*radius; area=PI*radius*radius; } void print(){ } void setr(double r){ cout<<\cout<<\cout<<\ radius=r; } }; int main(){ Circle c1(10),c2(c1); c1.print(); c2.print(); return 0; } 5.4 设计一个学校在册人员类(Person)。数据成员包括身份证号(IdPerson)、姓名(Name)、性别(Sex)、生日(Birth-day)和家庭住址(HomeAddress)。成员函数包括人员信息的录入和显示,还包括构造函数与复制构造函数。设计一个合适的初始值。 #include const double PI=3.1415; using namespace std; struct date{ int year,month,day; }; class Person{ char ID[12]; char Name[10]; char Sex[3];