2个日期之间相差天数
Description
时光匆匆,日子一天天的过去,一个百岁老人,所活天数也不过36500多天。现在,小明突然想知道自己已经活了几天。
已知小明的出生日期和现在的日期,请你帮助小明计算出他已活的天数。
如,出生日期为2011-10-01,现在是2011-10-27,则已活的天数为26天。
Input
2个日期d1,d2(之间以1个空格间隔,且d2>d1),分别表示小明的出生日期和现在的日期,形式都为yyyy-mm-dd。
保证输入的日期合法,而且在[1000-01-01,9999-12-31]范围内。
Output
输出小明已活的天数。
输入样例 1
2011-10-01 2011-10-27
输出样例 1
26
输入样例 2
2008-02-01 2011-10-27
输出样例 2
1364
以下是编程部分:
浅谈本题数学思维:
前导:
我们首先要清楚的知道题目在问什么:两个日期差。
那么,要求两个日期差我们需要考虑什么?显然有年份的润平,即二月的天数。还要考虑每个月天数的不一致、如何以月和日为单位进行加减运算等等……
这时,数学思维的重要性便体现出来了。好的思维方式可以提高解题的简洁性和逻辑性。
以下,是我的思维:
将年的计算与月、日分开。
举例:2000-01-24与2015-07-19,舍弃月、日,得到2000与2015,它们相隔2015-2000=15个年份(不包括2015年即2015.01.01--2015.12.31这段时间。),然后只考虑这十五年的润平,然后计算这十五年的总天数。
接下来处理月,日。对于结果而言,2000.01.01--2000.12.31已经计入总天数,所以2000.01.01--2000.01.24这段时间是多出来的,需要在结果中减去。同理,2015.01.01--2015.07.19这段时间没有计入总天数,所以需要加上这段时间。
这样,问题就变得简单了。我们只需要考虑一下2000与2015的润平(即当年的二月有几天)就可以得知多出与未计入的天数,再与处理年得到的结果进行加减即可。
要点:
1.自己实现了一个判断润年的函数leap,其返回值为1(真)和0(假)。
2.自己实现了一个处理年份的函数Ydispose,并考虑其润平。
3.自己实现了一个处理月、日的函数,并考虑润平,计算出多余与未计入的天数。并定义了两个一维数组用于获得月份对应的天数。(分别对应润平。)
4.结果在main函数里对d进行简单的加减,便可得知总天数。
标签:10,01,相差,天数,C语言,润平,2015,2011 From: https://blog.csdn.net/2401_87281716/article/details/142798698