第七周项目2-友元类(加强版)

来源:互联网 发布:信誉出肉 淘宝 编辑:程序博客网 时间:2024/06/05 11:55



 
问题及代码:

/*  *copyright (t) 2016,烟台大学计算机学院  *All rights reserved.  *文件名称:test.cpp  *作者:张晴晴  *完成日期:2016年4月17日 *版本号:v1.0 *问题描述:一个时间类一个日期类,两个类合并为一个,时间每次加一秒,共加100次。*输入描述:无。  *程序输出:输出时间信息。  */  #include<iostream>using namespace std;class Date;class Time{public:    Time(int h,int m,int s):hour(h),minute(m),sec(s){}    void add_a_second(Date &);//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年    void display(Date &);  //显示时间,格式: 月/日/年 时:分:秒private:    int hour;    int minute;    int sec;};class Date{public:    Date (int mon,int da,int ye):month(mon),day(da),year(ye){}    friend class Time;//time为date的友元类private:    int month;    int day;    int year;}; void Time::add_a_second(Date &a)//增加一秒,一秒后可能会到了下一天,乃到下一月,下一年    {        sec+=1;        if(sec>=60)        {        minute+=sec/60;        sec=sec%60;        }        if(minute>=60)        {        hour+=minute/60;        minute=minute%60;        }        if(hour>=24)        {        a.day+=hour/24;        hour=hour%24;        }        //开始注意月份啦        if(a.month==1||a.month==3||a.month==5||a.month==7||a.month==8||a.month==10||a.month==12)        {            if(a.day>31)            {            a.month+=a.day/31;            a.day=a.day%31;            }        }        if(a.month==4||a.month==6||a.month==9||a.month==11)        {            if(a.day>30)            {            a.month+=a.day/30;            a.day=a.day%30;            }        }        if(a.month==2)        {            if((a.year%4==0&&a.year%100!=0)||a.year%400==0)            {                 if(a.day>29)                {                a.month+=a.day/29;                a.day=a.day%29;                }            }            else            {               if(a.day>28)                {            a.month+=a.day/28;            a.day=a.day%28;                }            }        }        if(a.month>12)        {            a.year+=a.month/12;            a.month=a.month%12;        }    }    void Time::display(Date &d)  //显示时间,格式: 月/日/年 时:分:秒    {     cout<<d.year<<"/"<<d.month<<"/"<<d.day<<" "<<hour<<":"<<minute<<":"<<sec<<endl;    }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;}




 
运行结果:


 
 
 
 
 
知识点总结:
 
 这次注意了月份的不同导致的时间的不同。
 
学习心得:

判断闰年的时候那个长的条件要打括号否则会有警告;

那个if和else后面编写内容是最好也加上括号。

0 0