C语言如何判断是闰年,闰年判断条件

条件(year%4==0&&year%100!=0)||year%400==0,我觉得这个条件等价于year%4==0,后面的都可以不要,当条件只有year%4==0&&... 条件(year%4==0&&year%100!=0)||year%400==0,我觉得这个条件等价于year%4==0,后面的都可以不要,当条件只有year%4==0&&year%100!=0,像2000年就不是闰年了,加上||year%400==0满足其中一个就是了,请问大侠们,(year%4==0&&year%100!=0)||year%400==0,等价于year%4==0么? 展开
 我来答
坐等作业的葬礼
2018-05-08 · TA获得超过2万个赞
知道答主
回答量:101
采纳率:62%
帮助的人:3.4万
展开全部

不等价,因为判断闰年的标准是:1、能整除4且不能整除100 2、能整除400

你的意思是:

每4年有个闰年1896是闰年,4年后1900也是闰年除以4就是闰年

但严格上讲,"每4年一个闰年"这说法不严谨.应该是四年一闰,百年不闰,四百年再闰.

为什么呢?

1、产生闰年原因:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year).公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年.

2、但是,上面算法又有了一个问题.就是0.2422*4=0.9688,比一天还差0.0322天,每4年差0.0322天不算多,但每400年就会差了约3天.即是说,假如每4年一个闰年,那么每400年就会有100个闰年,然后会多算了3天.

所以,就规定了每四百年中要减少三个闰年.公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年.

综合以上2点,就有了现有的闰年判断标准.

能被4整除且不能被100整除的为闰年。如2004年就是闰年,1900年不是闰年。世纪年能被400整除的是闰年,如2000年是闰年,1900年不是闰年。对于数值很大的年份,这年如果能被3200整除,并且能被172800整除则是闰年。如172800年是闰年,86400年不是闰年,因为虽然能被3200整除,但不能被172800整除。

帐号已注销
推荐于2018-03-21 · TA获得超过2807个赞
知道小有建树答主
回答量:559
采纳率:0%
帮助的人:984万
展开全部
不等价,因为判断闰年的标准是:1、能整除4且不能整除100 2、能整除400
你的意思是:
每4年有个闰年<——>1896是闰年,4年后1900也是闰年<——>除以4就是闰年

但严格上讲,"每4年一个闰年"这说法不严谨。应该是四年一闰,百年不闰,四百年再闰。
为什么呢?
1、产生闰年原因:地球绕太阳运行周期为365天5小时48分46秒(合365.24219天)即一回归年(tropical year)。公历的平年只有365日,比回归年短约0.2422 日,所余下的时间约为四年累计一天,故四年于2月加1天,使当年的历年长度为366日,这一年就为闰年。

2、但是,上面算法又有了一个问题。就是0.2422*4=0.9688,比一天还差0.0322天,每4年差0.0322天不算多,但每400年就会差了约3天。即是说,假如每4年一个闰年,那么每400年就会有100个闰年,然后会多算了3天。
所以,就规定了每四百年中要减少三个闰年。公历年份是整百数的,必须是400的倍数的才是闰年,不是400的倍数的,虽然是100的倍数,也是平年。

综合以上2点,就有了现有的闰年判断标准。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
五四路飞先生
2019-12-23 · TA获得超过2966个赞
知道答主
回答量:1300
采纳率:37%
帮助的人:34.7万
展开全部
#include<stdio.h>

void main()

{
int year,a;

printf("请输入年份:");

scanf("%d",&year);

if((year/4==0&&year/100!=0)||(year/400==0)) a=1;
else a=0;

if(a=1)

printf("\n%d此年是闰年\n",year);

else printf("%d此年非闰年\n",year);

1.你要清楚什么样的年份才是闰年(能被4整除且不能被100整除或者能被400整除的。
2. 判断语句
if( ((0 == year%4)&&(0 != year%100)) ||(0 == year %400) )
{//满足该条件的yeat就是闰年。}
以下是源程序代码:
#include <stdio.h>
int main (void) {
int year;
printf ("please a year:");
scanf ("%i",&year);
if((year%4==0 && year%100!=0)||year%400==0){ printf ("%i is a leap year!",year);}else{ printf ("%i is not a leap year!",year);}
return 0;}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萧暮岚
2012-08-22
知道答主
回答量:18
采纳率:0%
帮助的人:6.6万
展开全部
不等价的。比如1900,你的判断方法就是它是闰年,但事实上,1900不是闰年。http://zhidao.baidu.com/question/28047556.html
这里有详细介绍。我当初学c的时候也有这个疑问,然后百度了一下,发现算法的发明者真的考虑的很周到,当时我也以为发现了真理,其实,还差的很远。加油!!!
追问
我记得初中的时候,老师说不是除以四就是闰年么?这样的话100,200都不是闰年了。。
追答
是滴!事实就是这样子。当时我们的知识储备可能还不过吧。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百灵鸟575
2013-04-13 · TA获得超过259个赞
知道答主
回答量:14
采纳率:0%
帮助的人:5.7万
展开全部
公历年份是4的倍数的一般都是闰年;但公历年份是整百数的,必须是400的倍数才是闰年。如1900年不是闰年,而2000年是闰年。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式