日期差值
·大致思路
①主要是使用结构体来表示日期,在结构体内构造求“下一天”的函数,在主函数内通过循环来预处理得到每一天到原点日期(0年1月1日)的差值。那么,两个日期的差值就是分别的差值相减。
②学到的点就是,由于这个输入是连续的数字,为了方便,这里有技巧:
scanf("%4d%2d%2d",&y,&m,&d) //%4d表示4个单int数字
·设计结构体的代码
int month_days[13][2]= //平年和闰年
{
0,0,
31,31,
28,29,
31,31,
30,30,
31,31,
30,30,
31,31,
31,31,
30,30,
31,31,
30,30,
31,31
};
struct Date
{
int y;
int m;
int d;
int flag=0; //若当前是闰年,则=1
void nextDay()
{
d++;
if((y%4==0 && y%100!=0) || y%400==0)
{
flag=1;
}
else
flag=0;
if(d>month_days[m][flag])
{
d=1;
month++;
if(month>12)
{
month=1;
y++;
}
}
}
}
main函数里的循环预处理,见书P16
求星期几——蔡公式(记忆)