这是一道很经典的算法题,简单来说就是给你两个日子然后算出它们之间差了几天(连续的日子之间算作两天),正好最近也需要制作这么一个小程序,最近看到了一个比较好的解决方案。
这道题的难度在于细节。平年和闰年二月的天数不同,每个月的天数也不同。
它首先把平年和闰年的月份中的日子用二维数组存起来,平年就是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;
然后,我们这里用加法,小的日期一直加1加到大的日期,算这里加了多少次,这中间要判断闰年,还要做年月日的进位。
int ans =1; //天数加1的次数
//当日期不相同时循环
w

本文探讨了一个经典算法问题——日期计算器,旨在计算两个日期之间的天数差。重点在于处理平年和闰年带来的复杂性,通过创建二维数组存储不同月份的天数,并设计判断闰年的函数。通过加法运算和日期进位来逐步接近目标日期,从而求得天数差。欢迎分享更多解决方案。

1708

被折叠的 条评论
为什么被折叠?



