这是一道很经典的算法题,简单来说就是给你两个日子然后算出它们之间差了几天(连续的日子之间算作两天),正好最近也需要制作这么一个小程序,最近看到了一个比较好的解决方案。
这道题的难度在于细节。平年和闰年二月的天数不同,每个月的天数也不同。
它首先把平年和闰年的月份中的日子用二维数组存起来,平年就是month[ ][0],闰年就是month[ ][1],这样设置很方便,也很好表示;
int month[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}};
然后做一个判断平年闰年的函数,这个return的意思就是,如果是闰年则返回1,平年则返回0。闰年的定义是可以被4整除且不能被100整除 或者可以被400整除;
bool IsLeap(int year)
{
return((year%4==0 && year%100!=0) || (year%400==0));
}
输入两个日期之后,用取模和除法运算分离出年月日;
y1=time1/10000; m1=time1%10000/100; d1= time1%100;
y2=time2/10000; m2=time2%10000/100; d2= time2%100;