友元

来源:互联网 发布:php项目开发视频教程 编辑:程序博客网 时间:2024/05/01 18:05

    设计一个日期类date,包括年份,月份,和日号,编写一个友元函数,求两个日期相差的天数。

 

 

 

 

#include<iostream.h>

class date

{

 

public:

       intyear;

 intmonth;

 intday;

       date(inty,int m,int d)

       {

        year=y;month=m;day=d;

       }

       voiddisp()

       {

        cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;

 

      

       }

       friendint coun_day(date &d,int);

       friendint leap(int year);

       friendint subs(date &d1,date &d2);

 

};

int count_day(date &d,int flag)

{

       staticint day_tab[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},

       {31,29,31,30,31,30,31,31,30,31,30,31}};

       intp,i,s;

       if(leap(d.year))

              p=1;

       elsep=0;

       if(flag)

       {

        s=d.day;

        for(i=1;i<d.month;i++)

               s+=day_tab[p][i-1];

       }

       else

       {

        s=day_tab[p][d.month]-d.day;

        for(i=d.month+1;i<=12;i++)

               s+=day_tab[p][i-1];

       }

       returns;

 

}

int leap(int year)

{

 if(year%4==0&&year%100!=0||year%400==0)//闰年

        return 1;

 else

        return 0;//不是闰年

 

}

int subs(date &d1,date &d2)

{

 intdays,day1,day2,y;

 if(d1.year<d2.year)

 {

        days=count_day(d1,0);

 for(y=d1.year+1;y<d2.year;y++)

         if(leap(y))

                days+=365L;

         else

         days+=365L;

         days+=count_day(d2,1);

 }

 elseif(d1.year==d2.year)

 {

 day1=count_day(d1,1);

 day2=count_day(d2,1);

 days=day2-day1;

 }

 else

        days=-1;

    return days;

 

}

void main()

{

 date d1(2000,1,1),d2(2002,10,1);

  intds=subs(d1,d2);

 cout<<"输出结果"<<endl;

 if(ds>=0)

  {

  d1.disp();cout<<"与";

  d2.disp();cout<<"之间有"<<ds<<"天"<<endl;

  }

 else

         cout<<"时间有误!"<<endl;

 

}

原创粉丝点击