📄 10-6.cpp
字号:
#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()
{
printf("%d.%d.%d",year,month,day);
}
friend int count_day(Date &d,int);
friend int leap(int year);
friend int subs(Date &d1,Date &d2);
};
int count_day(Date &d,int flag)
{
static int day_tab[2][12]={{31,28,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
//使用二维数组存放各月天数,第一行对应非闰年,第二行对应闰年
int p,i,s;
if(leap(d.year))
p=1;
else
p=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];
}
return(s);
}
int leap(int year)
{
if(year%4==0&&year%100!=0||year%400==0) //是闰年
return 0;
}
int subs(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(leap(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=subs(d1,d2);
printf("输出结果:\n");
if(ds>=0)
{
d1.disp();printf("与");
d2.disp();printf("之间有%d天\n\n",ds);
}
else
printf("时间错误!\n");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -