友元
来源:互联网 发布: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;
}
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- 友元
- UNIX域套接字
- 消除: warning C4996: 'sprintf': This function or variable may be unsafe. Consider 的方法
- Shell 编程--本文结合大量实例阐述如何编写一个shell脚本
- GWT -Internationalization相关的处理
- putty 使用密钥自动登录 ssh
- 友元
- Android 之 拍照小结
- Oracle analyze
- GWT-internationalization (配置)
- Ubuntu 下 SSH 设置
- 内存才是对象活动的主要空间
- 四种操作xml的方式:SAX, DOM, JDOM , DOM4J的比较
- 基于公钥认证方式的 OpenSSH Server 自动登录完全手册
- 命名管道实现进程间通信