C 语言 解惑 if(year%400==0||(year%4==0&&year%100!=0))/*判断是不是闰年*/

为什么这样呢/ 只需要year%4==0 就可以判断是否为闰年了啊?

地球绕太阳运行周期为回归年,即365天5小时48分46秒(合365.24219天)。公历的平年只有365日,比回归年短约0.2422 日。经过400年,公历平年比回归年一共少了(0.2422 *400=96.88天),约等于97天,所以公历中每400年有97个闰年。但如果按照每四年一个闰年计算,平均每年就要多算出0.0078天,这样经过四百年就会多算出大约3天来,因此,每四百年中要减少三个闰年。所以规定,公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年,这就是通常所说的:四年一闰,百年不闰,四百年再闰。 例如,2000年是闰年,1900年则是平年追问

我的意思是为什么要写那么多啊 只需要年份能够整除4就可以了啊

追答

刚才偷懒抄了百度百科里的解释,看样子还是不够通俗啊。再解释一遍。
地球绕太阳一圈,实际上花365.24219天,但公历一年只有365天,所以一年就少算了0.24219天。400年下来,少的日子就很可观了,有(0.24219*400=96.876天),约97天,这些得补上。一个简单的法子就是每4年规定为闰年,闰年要补一天,这样子400年就补了100天,但多补了3天。怎么办?简单,随便废掉3个闰年就行了。为了方便,就找上了整百的年份,每400年有4个整百年份,除了能被400整除的那年定为闰年,其他3个整百年都是平年,这纯粹是人为规定。
year%4==0&&year%100!=0 就是能被4整除的非整百年,是闰年。

year%400==0 就是能被400整除的整百年,是闰年。

year%100==0 && year%400!=0 就是另三个整百年,不是闰年。

所以同学你说的year%4==0不是判断闰年的完整规则,记得每400年要干掉3个特例!正确的规则是上述第一种情况和第二种情况的总和。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-01
公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年,这就是通常所说的:四年一闰,百年不闰,四百年再闰。
这个是闰年的概念问题
单纯的除以4 就把整除100的也包含在里面了
而闰年的定义是整除100,但是不能整除400的,就不是闰年了

望采纳本回答被网友采纳
第2个回答  2012-12-01
这个问题小学时老师都讲过,就是“什么是闰年”再把它翻译成c语言。追问

我的意思是为什么要写那么多啊 只需要年份能够整除4就可以了啊

追答

你还是没搞懂什么是闰年

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网