A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 18503582292 中级黑马   /  2015-9-18 18:29  /  1293 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

int year;
if (!(year%4)&&year%100||!(year%400)) {
        printf("%d年是闰年\n",year);
    }else{printf("%d年不是闰年\n",year);}}

闰年不是就是四年轮回一次么?而且有前面的与,后面的或就短路了呀?
谁能给我解答一下。
万分感谢!

10 个回复

倒序浏览
能被4整除且不被100整除,或者能被400整除叫做闰年
回复 使用道具 举报
毛强 发表于 2015-9-18 21:10
能被4整除且不被100整除,或者能被400整除叫做闰年

我是想要为什么这样写,而不是这是什么
回复 使用道具 举报
不是直接有一个能被4整除就OK了吗?
回复 使用道具 举报
才知道原来闰年是这样计算的。无知了。
回复 使用道具 举报
地球绕太阳转一周的实际时间是365天5时48分46秒。如果一年只有365天,那么每年就多出5个小时。4年多出的23小时15分4秒,差不多就等于1天。于是决定每四年增加1天。但是,它比一天24小时又少了约45分钟,如果每100年有25个闰年的话,就少了18时43分20秒,这就差不多等于1天了,这显然不合适。
可以算出,每年多出5小时48分46秒,100年就多出581小时16分40秒。而25个闰年需要25*24=600小时。581小时16分40秒只够24个闰年(24*24=576小时),于是决定每100年只安排24个闰年(世纪年不作闰年)。但是这样每100年又多出了5小时16分40秒(581小时16分40秒-576小时),于是又决定每400年增加一个闰年。这样就比较接近实际情况了。
根据以上的,决定闰年按照以下的计算规则:闰年应能被4整除(如2004年是闰年,而2001年不是闰年),但不是所有被4整除的年份都是闰年。在能被100整除的年份中,又同时能被400整除的年份才是闰年(如2000年是闰年),能被100整除而不能被400整除的年份(如1800、1900、2100)不是闰年。这是国际公 认的规则。只说“能被4整除的年份就是闰年”是不准确的

原来是这样的
回复 使用道具 举报
大宝820 来自手机 中级黑马 2015-9-18 23:33:34
7#
18503582292 发表于 2015-9-18 23:06
地球绕太阳转一周的实际时间是365天5时48分46秒。如果一年只有365天,那么每年就多出5个小时。4年多出的23 ...

好复杂啊
回复 使用道具 举报
zzx0826 来自手机 中级黑马 2015-9-18 23:49:34
8#
回复 使用道具 举报
if ( (year % 4 == 0 && year % 100 != 0)|| (year % 400 == 0)) //判断是否为闰年       printf("\n%d is a leap year", year);
回复 使用道具 举报
18503582292 发表于 2015-9-18 22:57
我是想要为什么这样写,而不是这是什么

对的,是这样计算的。。
回复 使用道具 举报
[code]// 不能被100整除且能被4整除,或者能被400整除,是闰年
    if ((((year%100) != 0) && (0 == (year%4))) || (0 == (year%400))) {
        return 1;
    }
    // 其余是平年
    return 0;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马