P317,13.3
View Code
1 #include2 #include 3 using namespace std; 4 5 static char daytable[2][13]={ 6 { 0,31,28,31,30,31,30,31,31,30,31,30,31}, 7 { 0,31,29,31,30,31,30,31,31,30,31,30,31} 8 }; 9 class Date10 { 11 //重载为友元12 //friend Date & operator+(Date &date,int d);13 friend ostream & operator<<(ostream &output,Date &d);14 public:15 Date();16 Date(int y,int m,int d);17 ~Date();18 //重载为成员函数19 Date & operator+(int d);20 static int isLeap(int y);21 22 protected:23 int year,month,day;24 };25 26 Date::Date()27 {28 year=2013;29 month=3;30 day=25;31 }32 33 Date::Date(int y,int m,int d)34 {35 year=y;36 month=m;37 day=d;38 }39 40 int Date::isLeap(int y)41 {42 return (y%4==0 && y%100 || y%400==0);43 }44 45 Date::~Date()46 {}47 48 Date & Date::operator+(int d)49 {50 while(day+d>daytable[isLeap(year)][month])51 {52 d-=daytable[isLeap(year)][month]-day;53 if(month==12)54 {55 year++;56 month=1;57 }58 else59 month++;60 day=0;61 }62 day+=d;63 64 return *this;65 }66 67 68 ostream & operator<<(ostream &output,Date &d)69 {70 output< <<"-"< <<"-"< < daytable[Date::isLeap(date.year)][date.month])78 {79 d-=daytable[Date::isLeap(date.year)][date.month]-date.day;80 if(date.month==12)81 {82 date.year++;83 date.month=1;84 }85 else86 date.month++;87 date.day=0;88 }89 date.day+=d;90 return date;91 }*/92 93 void main()94 {95 Date d(2013,3,25);96 d=d+365;97 cout<
P317,13.7
View Code
1 #include2 #include 3 //#include 4 using namespace std; 5 6 class Time 7 { 8 friend ostream & operator<<(ostream &output,Time &time); 9 friend istream & operator>>(istream &input,Time &time);10 public:11 Time(int h=0,int m=0,int s=0);12 private:13 int hour,minute,second;14 };15 16 Time::Time(int h,int m,int s)17 {18 hour=(h>=0 && h<=23)?h:0;19 minute=(m>=0 && m<=59)?m:0;20 second=(s>=0 && s<=59)?s:0;21 }22 23 ostream & operator<<(ostream &output,Time &time)24 {25 output< < < <<":"26 < < < <<":"27 < < < < >(istream &input,Time &time)33 {34 char buffer[81];35 input.getline(buffer,3,'-');36 time.hour=atoi(buffer);37 input.getline(buffer,3,'-');38 time.minute=atoi(buffer);39 input.getline(buffer,3,'\n');40 time.second=atoi(buffer);41 return input;42 }43 44 void main(void)45 {46 Time time(12,36,25);47 cout<<"hh-mm-ss:"< >time;49 cout<