C语言有关确定日期的相关问题

经常在实际问题中会碰到类似日期确定的相关问题,在这里给大家做了一个简单的总结,希望能启发更多的想法:

闰年的确定:

对于确定日期过程中经常会遇到对闰年判断,此处犯难的原因大多并不是算法的问题,而是对闰年的计算方法不够透彻。所谓闰年,即每四年一闰,每一百年减一闰,每四百年加一闰。由此便可很简单的写出判断闰年的语句:
在这里插入图片描述

About this day:

Enter a certain day (a year,month and day ) , to determine the day of the year( from the first day )?
such as : input: 2017,1,5

   对于这个问题,无非是要求确定输入的日期是一年的第几天,由此我们做如下分析:

首先,年份分闰年平年,因此此处便要用到上述对闰年的判断,判断年份之后需要对于平年和闰年分别进行分析;
其次,一年12个月分大小月,当输入月份之后,就是对月份的判定,对于3月以后的月份,2月的29号对天数将有影响,因此可以2月作为一条分界线。大月:1,3,5,7,8,10,12为31天,小月:4,6,9,11。由于以2月作为一次分界,因此可将1月单独考虑,即一月的日期就是该日期的天数。对于之后的日期,我们只需对此月前面的月份天数求和,然后加上该月的日期就是该日期的天数。
思路基本确定,然后就是用语句来实现:(简单以a,b,c代表年,月,日)
1.闰年: 1月日期正好就是其序数,2月则为1月的31天加上日期数,闰年2月为29天,以一个大月和一个小月为一个周期共61天,此时1,2月加起来为60天,因此最终的周期数要减一:在这里插入图片描述
2.平年:与闰年类似
在这里插入图片描述

确定母亲节:

有这样一个问题:

母亲节是每年的五月第二个星期天,针对输入的年份,计算该年的哪一天是母亲节。

   对于这个问题,乍一看似乎对此没有丝毫头绪,但稍微分析一下就会找到一点思路:

首先,母亲节是每年的五月第二个星期天,那么我们所要找的就是每年的五月第二个星期天是几号;从整体上来看,如果不存在闰年的影响,即一年是365天,利用周期性可以计算出365%7=1,意味着每年母亲节的日期往前延顺一天,即2014年母亲节如果是11号,那么可以确定2015年母亲节是10号,而对于五月的第二个星期天,显然只能出现在8号到14号这个区间内,因此现在只需要某年的母亲节就可以得到所有的母亲节的日期,即相差的年份对7取余,在补上闰年增加的天数,就是向前延顺的日期。

凑巧的是,2000年的母亲节正好是14号,因此就可以得到一个简单的算法(由于四百年加一闰,一百年减一闰,因此这个只是局限于2000年到2100年之间):

在这里插入图片描述
可以在此基础上改进使得能够计算任意的母亲节的日期。

猜你喜欢

转载自blog.csdn.net/weixin_43361652/article/details/85450915
今日推荐