项目4~友元类

来源:互联网 发布:五花大绑知乎 编辑:程序博客网 时间:2024/04/28 04:58
*烟台大学计算机学院学生                                                                     *All right reserved.                                                    *文件名称*烟台大学计算机学院学生                                                                     *All right reserved.                                                    *文件名称:项目4~友元类*作者:杨飞                                                                              *完成日期:2014年4月9日                                                                   *版本号:v1.0                                                                               *对任务及求解方法的描述部分:项目4~友元类*我的程序:#include<iostream>using namespace std;class Date; //对Date类的提前引用声明class Time{public:    Time(int,int,int );    void add_a_second(Date &d);  //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年    void display(Date &d);  //显示时间,格式:月/日/年 时:分:秒private:    int hour;    int minute;    int sec;};class Date{public:    Date(int,int,int);    friend class Time; //Time为Date的友元类private:    int month;    int day;    int year;};Time::Time(int h,int m,int s){    hour=h;    minute=m;    sec=s;}Date::Date(int m1,int d,int y){    year=y;    month=m1;    day=d;}void Time::add_a_second(Date &d)  //增加1秒,1秒后可能会到了下一天,乃到下一月、下一年{     sec+=1;    while(1)    {        if(sec>60||sec==60)           {               minute++;               sec-=60;           }        if(sec<60)            break;    }     while(1)    {        if(minute>60||minute==60)         {             hour++;             minute-=60;         }        if(minute<60)            break;    }     while(1)    {        if(hour>24||hour==24)         {             d.day+=1;             hour-=24;         }        if(hour<24)            break;    }     if(d.month==4||d.month==6||d.month==9||d.month==11)     {          if(d.day>30)           d.month++;           if(d.month>12&&d.day>31)           {               d.month=1;               d.day=1;               d.year++;           }     }     else if(d.month==1||d.month==3||d.month==5||d.month==7||d.month==8||d.month==10||d.month==12)    {        if(d.day>31)       d.month++;       if(d.month>12&&d.day>31)           {               d.month=1;               d.day=1;               d.year++;           }    }    if(d.month==2)    {       if((d.year%4==0&&d.year%100!=0)||d.year%400==0)       {           if(d.day>29)          d.month++;       }       else       {           if(d.day>28)           d.month++;       }    }}int main( ){    Time t1(23,59,32);    Date d1(12,31,2013);   //测试时,再试试Date d1(2,28,2013)会如何    for(int i=0; i<=100; i++)    {        t1.add_a_second(d1);        t1.display(d1);    }    return 0;}void Time::display(Date &t){    cout<<t.year<<"年"<<t.month<<"月"<<t.day<<"日";    cout<<hour<<":"<<minute<<":"<<sec<<endl;}

运行结果:

心得体会:加油!!!


0 0
原创粉丝点击