如何用C 程序来写一个闰年算法?

如何用C 程序来写一个闰年算法?我们在小学时老师教我们能被 4 整除的就是闰年 等到我们大了 又有人告诉我们能被 4 整除 但不能被 100 整除的都是闰年 那这是怎么回事 其实 从严格的意义来讲 这两个都不准确 nbsp nbsp nbsp nbsp nbsp 根据维基百科 我们可以知道一标准年为 nbsp nbsp 365 天 5 时 48 分 45 5 秒 nbsp nbsp nbsp nbsp nbsp 那么这就意味着时间存在着人为的误差 由于时间秒的定义是已经规定的标准 不可能改变 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp 为了规避这一问

我们在小学时老师教我们能被 4 整除的就是闰年,等到我们大了,又有人告诉我们能被 4 整除,但不能被 100 整除的都是闰年。那这是怎么回事?

其实,从严格的意义来讲,这两个都不准确。

      根据维基百科,我们可以知道一标准年为    365天 5时 48分 45.5秒。

      那么这就意味着时间存在着人为的误差,由于时间秒的定义是已经规定的标准,不可能改变

          为了规避这一问题,最终采用 4 进制作为解决方法







标准年: 365/5/48/45.5 余有:5/48/45.5 -- 格式 时/分/秒 这时余有是正(个人理解) 用于给每一个4进制年一天, 但是每一个 4进制 就会有 - 0/44/58的差错 4 X 余有 20/192/182 -> 20/|3 + 12/|3 + 2 -> 23/15/2 余有:- 0/44/58 -- 同理,一百年时这个差错已经很大了,需要在 100年的 366天变为 365天, 这时,我们就有了余有:5/15/50 100 X -0/1100/1450 -> -0/|18 + 20/|24 + 10 -> -18/44/10 余有:5/15/50 -- 以此循环往复 400 X 20/60/200 -> 20/|1 + 0/|3 + 20 -> 21/3/20 余有:-2/56/40 3200 X -16/448/320 -> -16/|7 + 28/|5 + 20 -> -23/33/20 余有:0/26/40  X 0/1404/2160/ -> 0/|23 + 24/|36 + 0/ -> 24/0/0 余有:0/0/0 

这是我个人的学习心得

#include 
  
    int years; _Bool goSign; _Bool leapYearSign; void inputYear(); _Bool judgeLeapYear(int years); void display(); void inputYear() { printf("please input years:\n"); scanf("%d",&years); //Warning Writing format scanf("%d \n",&years); } _Bool judgeLeapYear(int years) { printf("judging......\n"); if(years %4 == 0) { if(years %100 == 0) { if(years %400 == 0) { if(years %3200 == 0) { if(years % == 0) leapYearSign = 1; else leapYearSign = 0; } else leapYearSign = 1; } else leapYearSign = 0; } else leapYearSign = 1; } else leapYearSign = 0; printf("judged\n"); } void display() { printf("year: %d is LeapYear: %d\n",years,leapYearSign); printf("Do you want go down, Yes-1,No-0\n"); scanf("%d",&goSign); } int main() { do { inputYear(); judgeLeapYear(years); display(); }while(goSign == 1); return 0; } 
  

另附图片

如何用C 程序来写一个闰年算法?

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/215777.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月18日 下午1:11
下一篇 2026年3月18日 下午1:11


相关推荐

  • android onresume函数,android – 在Activity中重新创建后未调用onResume

    android onresume函数,android – 在Activity中重新创建后未调用onResume在应用程序设置中进行某些更改时,我在recreate的onActivityResult中调用MainActivity。重新创建后,不调用onResume。我也收到错误:E/ActivityThread:Performingpauseofactivitythatisnotresumed从this问题开始,我了解到不能从onResume调用此函数。但是我从onActivityResul…

    2022年6月2日
    109
  • jetbrain 激活码【最新永久激活】

    (jetbrain 激活码)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月30日
    711
  • IDEA 2022.01.13激活服务器【最新永久激活】

    (IDEA 2022.01.13激活服务器)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.net/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~1PA3AFINM4-eyJsaWNlbnNlSWQiOi…

    2022年3月31日
    133
  • 苹果手机怎么抓取京东ck(ios获取京东cookie)

    安卓手机抓取京东cookie手机下载Alook浏览器下载地址https://ddayh.lanzoui.com/ioHNNuzjunc打开Alook浏览器访问京东手机版网址https://m.jd.com/点击网页的右上角登陆账号(短信验证登录)登录完成以后点击浏览器中间的菜单键右滑一下找到工具箱->最下面的开发者工具->Cookies,拷贝注意获取到cookie后不能直接退出,否则cookie会立刻失效,关闭窗口即可。获取多账号cookie可以打开无痕窗口,没获取到一

    2022年4月15日
    876
  • Stata安装外部命令——以Winsor2缩尾命令为例

    Stata安装外部命令——以Winsor2缩尾命令为例说明计量经济学中经常要对数据进行缩尾处理 winsor 是 Stata 中常用的缩尾命令 需要安装才能调用 安装 winsor2 方法一 sscinstallwi 方法二 finditwinsor 的使用 winsor2var cut 199 replacePS 表示对数据进行上下 1 缩尾处理 直接替换 不产生新变量

    2026年3月26日
    8
  • 详解libevent网络库(一)—框架的搭建

    详解libevent网络库(一)—框架的搭建libevent 随手记 libevent 概述起源获取源码初识 libevent 框架学习 event base 重中之重从思想上出发一 拿出火箭壳 gt event base 创建与释放二 造螺丝 gt event new 创建与释放三 拧螺丝 gt event add 相关函数四 一节一节造火箭 gt event base dispatch 相关函数 l

    2026年3月19日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号