一、问题及代码
/*
* 文件名称:Ex5-1.cpp
- * 作 者:聂雪云
- * 完成日期:2017 年 5 月 8 日
- * 版 本 号:cb v1.25.0
- * 对任务及求解方法的描述部分:
- * 输入描述:无
- * 问题描述:设计书类
- * 程序输出:略
- * 问题分析:略
- * 算法设计:略
- #include <iostream>
using namespace std;
class Date;
class Time
{
public:
Time(int i,int j,int k)
{
hour=i;minute=j;sec=k;
}
void add_a_second(Date &);
void display(Date &);
private:
int hour;
int minute;
int sec;
};
class Date
{
public:
Date(int i=0,int j=0,int k=0)
{
month=i; day=j; year=k;
}
friend class Time;
private:
int month;
int day;
int year;
};
int main()
{
Time t1(23,59,32);
Date d1(2,28,2013);
for(int i=0;i<=100;i++)
{
t1.add_a_second(d1);
t1.display(d1);
}
return 0;
}
void Time::add_a_second(Date &d1)
{
if(sec<59)
{
sec++;
}
else if(sec==59)
{
sec=0;
if(minute<59)
{
minute++;
}
else if(minute==59)
{
minute=0;
if(hour<23)
{
hour++;
}
else if(hour==23)
{
hour=0;
if(d1.year%4==0&&d1.year%100!=0||d1.year%400==0)
{
switch(d1.month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:if(d1.day<31)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 4:
case 6:
case 9:
case 11:if(d1.day<30)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 2:if(d1.day<29)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 12:if(d1.day<31)
d1.day++;
else
{
d1.day=1;
d1.month=1;
d1.year+=1;
}
break;
}
}
else if((d1.year%4==0&&d1.year%100!=0||d1.year%400==0)==0)
{
switch(d1.month)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:if(d1.day<31)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 4:
case 6:
case 9:
case 11:if(d1.day<30)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 2:if(d1.day<28)
d1.day++;
else
{
d1.day=1;
d1.month++;
}
break;
case 12:if(d1.day<31)
d1.day++;
else
{
d1.day=1;
d1.month=1;
d1.year+=1;
}
break;
}
}
}
}
}
}
void Time::display(Date &d1)
{
cout<<d1.month<<"\\"<<d1.day<<"\\"<<d1.year<<"\t"<<hour<<":"<<minute<<":"<<sec<<endl;
}
二、运行结果
三、心得体会
运用合适的方法可以事半功倍
四、知识点总结
友元函数