| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 536 人关注过本帖
标题:友元函数 日期类 这个程序我读不懂,请问一下各位高手,这个程序该怎么理解 ...
只看楼主 加入收藏
敏枫
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2010-10-17
结帖率:0
收藏
 问题点数:0 回复次数:1 
友元函数 日期类 这个程序我读不懂,请问一下各位高手,这个程序该怎么理解??
1、    定义日期类Date包含年、月、日3个数据成员,编写一个友元函数,求两个日期之间相差的天数。
#include<iostream.h>
#include<stdio.h>
class Date
{
    int year;
    int month;
    int day;
    public:
        Date(int y,int m,int d)
        {
            year=y;month=m;day=d;
        }
        void disp()
        {
           cout<<year<<month<<day<<endl;
        }
        friend int count_day(Date &d,int);
        friend int l(int year);
        friend int h(Date &d1,Date &d2);
};
int count_day(Date &d,int k)
{
    static int 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}};
               // 使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年
    int j,i,s;
    if(l(d.year))
        j=1;
    else j=0;
    if(k)
    {
        s=d.day;
        for(i=1;i<d.month;i++)
            s+=day_tab[j][i-1];
    }
    else
    {
        s=day_tab[j][d.month]-d.day;
        for(i=d.month+1; i<=12; i++)
            s+=day_tab[j][i-1];
    }
    return s;
}
int l(int year)
{
    if(year%4==0&&year%100!=0||year%400==0)   // 是闰年
        return 1;
    else   // 不是闰年
        return 0;
}
int h(Date &d1,Date &d2)
{
    int days,day1,day2,y;
    if(d1.year<d2.year)
    {
        days=count_day(d1,0);
        for(y=d1.year+1;y<d2.year;y++)
            if(l(y))
                days+=366L;
            else
                days+=365L;
         days+=count_day(d2,1);
    }
    else if(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);
    int ds=h(d1,d2);
    {
    cout<<"输出结果:"<<endl;
    }
    if(ds>=0)
    {
       d1.disp(); printf("与");
       d2.disp(); printf("之间有%d天\n\n",ds);
    }
    else
        cout<<"时间错误!"<<endl;
}
搜索更多相关主题的帖子: 函数 
2010-10-17 19:33
m21wo
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:4
帖 子:440
专家分:1905
注 册:2010-9-23
收藏
得分:0 
回去看C++面向对象去

If You Want Something, Go Get It, Period.
2010-10-17 21:21
快速回复:友元函数 日期类 这个程序我读不懂,请问一下各位高手,这个程序该怎 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014872 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved