语言闰年流程图_由一道闰年程序计算题引发的思考

本文通过一道找出2000-2500年内所有闰年的题目,深入探讨了闰年的计算规则,包括四年一闰、百年不闰、四百年又闰等,并用C++描述了程序流程,同时分析了不同周期下的闰年秒数差值,揭示了闰年计算背后的数学原理。
摘要由CSDN通过智能技术生成

闰年的计算

4c609a60e72569cdf931f04fe4ba1613.png

闰年

原题

找出2000-2500年内所有的闰年

解题思路

闰年计算规则:

  1. 四年一闰
  2. 百年不闰
  3. 四百年又闰

程序流程图:

ec50333f9e8220da064c65a233b54f09.png

用C++语言描述:

#include using namespace std;int main(){    int y=2000;    while(y<=2500)    {        if((y%4==0&&y%100!=0)||y%400==0)        {            cout<
62da6f2b39f877fbf73bb15145d5b889.png

代码截图

1e96aa9584b66a81175377f7cd77f4d7.png

部分运行结果

由原题引发的思考

经查阅,一个回归年的周期(即地球绕太阳转一周的时间)为365天5小时48分46秒。也就是说地球每公转一周,就会比实际的平年多出5小时48分46秒,即20926秒(5*3600+48*60+46)。而每个闰年会比每个平年多出一天,即86400秒(24*3600秒)。

在以上前提下,我们对闰年计算规则进行分析。为计算方便,现将所有的时间单位,都换算成秒。

规则一:四年一闰(以4年为一个周期)

  1. 每个回归年比实际平年多出的秒数:5*3600+48*60+46=20926
  2. 每4年多出的秒数:20926*4=83704
  3. 闰年会多出1天,1天的秒数:24*3600=86400
  4. 每4年少的秒数:86400-83704=2696
ae5a5343bb4903839e565ee03dd6dd9b.png

4年一周期

规则二:四年一闰,百年不闰(以100年为一个周期)

  1. 每100年会有24个闰年
  2. 每100年实际少的秒数:2696*24=64704
  3. 第100年不闰
  4. 每100年的最后4年多出的秒数:20926*4=83704
  5. 每100年多出的秒数:83704-64704=19000
bfb73a8b71ab91ffe9a2c8a7bf14fd3c.png

100年一周期

规则三:四年一闰,百年不闰,四百年又闰(以400年为一个周期)

  1. 在规则二的前提下,400是100的4个周期
  2. 400年会多出的秒数:4*19000=76000
  3. 第400年要闰,会比平年多出一天
  4. 每400年少的秒数:86400-76000=10400
107b27a71b4d280d1f37d2f1765e642c.png

400年一周期

规则四:四年一闰,百年不闰,四百年又闰,3200年不闰(以3200年为一个周期)

  1. 在规则三的前提下,3200是400的8个周期
  2. 每3200年少的秒数:10400*8=83200
  3. 3200是400的整数倍,规则四违反了规则三,需要补上一天
  4. 每3200年多出的秒数:86400-83200=3200
ac2f93a16ce1fc68afeada49122c7e56.png

3200年一周期

规则五:四年一闰,百年不闰,四百年又闰,3200年不闰,86400年要闰(以86400年为一个周期)

  1. 在规则四下的前提下,86400是3200的27个周期
  2. 每3200年多出了3200秒
  3. 每86400年多出的秒数:3200*27=86400
  4. 86400秒正好是一天,即86400年要闰
016db4a3e0a16e98d79ea732d2989af9.png

86400年一周期

至此闰年的计算规则已分析完毕。

e8f302d750e239ffe13650a84a0ff029.png

闰年计算

总结

以上的闰年算法,是基于一个回归年的周期为365天5小时48分46秒前提计算的。如果没有这个条件,该算法得出的值是存在问题的。由于地球和太阳乃至整个宇宙,都是在不断运动的,所以在遥远的未来一个回归年的周期,不一定是365天5小时48分46秒。但在你有生之年,以上算法是行之有效的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值