求教C高手 一个问题

jasmine 2011-03-07 06:36:59
#include <stdio.h>
void main()
{
int year,leap;
scanf("%d",&year);
if(year%4!=0)
leap=0;
else if(year%100!=0)
leap=1;
else if(year%400!=0)
leap=0;
else
leap=1;


if(leap)
printf("%d is ",year);
else
printf("%d is not ",year);
printf("a leap year.\n");
system("pause");
}




以上是我照书上健入的程序
题目是用来计算闰年的办法的题

这个题目上的讲解和这程序让人感觉很模糊
讲解说:
闰年的条件是(1)能被4整除但不能被100整除的年份
(2)能够被100整除又能够被400整除的年份


只能够被100整除的为什么不是闰年

还有那个‘四年一闰,百年不闰,四百年再闰’怎么解释
...全文
223 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
qweworld 2011-03-08
  • 打赏
  • 举报
回复
其实上面的题目讲解云山雾绕的不易理解,其实我感觉是出题人没把意思说明白,一句话,能被4整除的年份是闰年,但有个特例,如果年份是整百的必须被400整除才是闰年,举例:2000年时闰年而2100年就不是闰年!
这样再看程序,应该很好理解了吧.
cao_julians 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 buleriver 的回复:]
这仅仅是闰年的定义,程序员不需要关注。
程序员需要关注的是,使用定义和逻辑,编写正确的代码。
[/Quote]
================
这个观点不对,对题目内容(好比需求方的要求)弄不清楚的话,是交付不了高质量程序的
wizard_tiger 2011-03-08
  • 打赏
  • 举报
回复
这个只是历法的定义。
super_admi 2011-03-08
  • 打赏
  • 举报
回复
鄙视!

[Quote=引用 5 楼 ladyf 的回复:]
引用 2 楼 yaozidan_001 的回复:
2100年能整除100,但是它不是闰年,是平年。

为什么2100不是闰年
我么记得小时候学的是可以 被4整除就是闰年
那么2100年为什么不是闰年啊 大侠
[/Quote]
super_admi 2011-03-08
  • 打赏
  • 举报
回复
牛叉!

[Quote=引用 15 楼 zhao4zhong1 的回复:]
因为一年的实际精确时间大概是365.2425天
所以如果一直每隔4年一闰
100年的话
日历100*365+25=36525天,实际365.2425*100=36524.25天
400年的话
日历4*(100*365+25)=4*36525=146100天,实际4*(365.2425*100)=4*(36524.25)=146097天
日历比实际多了整3天,所以调整为在400年中的4个……
[/Quote]
super_admi 2011-03-08
  • 打赏
  • 举报
回复
支持!

[Quote=引用 13 楼 anyidan 的回复:]
if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )

楼主要关心历法吗?
因为我们计算的地球饶太阳一周的时间不可以被24*60*60整除,所以每年365天有误差,为了消除它,人为的对历法进行补偿,如何补偿,完全是一个人为制定的游戏规则
[/Quote]
赵4老师 2011-03-08
  • 打赏
  • 举报
回复
因为一年的实际精确时间大概是365.2425天
所以如果一直每隔4年一闰
100年的话
日历100*365+25=36525天,实际365.2425*100=36524.25天
400年的话
日历4*(100*365+25)=4*36525=146100天,实际4*(365.2425*100)=4*(36524.25)=146097天
日历比实际多了整3天,所以调整为在400年中的4个xx00年少闰三个闰年,具体规则就是xx00除400余0的那年闰,其余三个xx00年不闰。
yiyefangzhou24 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ladyf 的回复:]
引用 2 楼 yaozidan_001 的回复:
2100年能整除100,但是它不是闰年,是平年。

为什么2100不是闰年
我么记得小时候学的是可以 被4整除就是闰年
那么2100年为什么不是闰年啊 大侠
[/Quote]
2100应该除400不能整除就不是。
AnYidan 2011-03-08
  • 打赏
  • 举报
回复
if ( (year % 4 == 0 && year % 100 != 0) || year % 400 == 0 )

楼主要关心历法吗?
因为我们计算的地球饶太阳一周的时间不可以被24*60*60整除,所以每年365天有误差,为了消除它,人为的对历法进行补偿,如何补偿,完全是一个人为制定的游戏规则
dianyancao 2011-03-08
  • 打赏
  • 举报
回复
3652536425
dianyancao 2011-03-08
  • 打赏
  • 举报
回复
return year % 400 ? year % 100 ? year % 4 ? false : true : false : true;
BuleRiver 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 cao_julians 的回复:]
引用 7 楼 buleriver 的回复:
这仅仅是闰年的定义,程序员不需要关注。
程序员需要关注的是,使用定义和逻辑,编写正确的代码。
================
这个观点不对,对题目内容(好比需求方的要求)弄不清楚的话,是交付不了高质量程序的
[/Quote]
如果我不了解需求,就制定不出合理的定义和逻辑,关于闰年:需求就是能被4整除同时不能被100整除,能被400整除的也是闰年,这就是需求,这是客户要求的,而且已经足够了。如果你给客户这样说:“你为什么搞这么复杂而变态无理的需求?闰年你为什么要这么计算?这样计算太复杂,而且不科学!你应该……,或者你就不应该管闰年的事情”。
你觉得你的客户会怎么给你说?
Dawncui 2011-03-08
  • 打赏
  • 举报
回复
bool isLeapYear(int year )
{
return ( ( !(year % 4 ) && (year % 100) ) ||( !(year%4) && !(year%400)) );
}
wuywyt1010 2011-03-07
  • 打赏
  • 举报
回复
是的,你可以去了解一下为什么闰年的判断条件是这样的。但作为程序而言,对这个已经成为规律的判断条件,严格按照语法格式进行描述其表达式吧,当然条件中,能被400整除的,就一定能被100整除,所以判断条件的表达式完全可以这样书写:(year % 4 ==0 && year % 100 !=0)||(year % 400==0)
lly124456 2011-03-07
  • 打赏
  • 举报
回复
思想擦拭西安市
BuleRiver 2011-03-07
  • 打赏
  • 举报
回复
这仅仅是闰年的定义,程序员不需要关注。
程序员需要关注的是,使用定义和逻辑,编写正确的代码。
愤怒的熊猫007 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 ladyf 的回复:]
引用 2 楼 yaozidan_001 的回复:
2100年能整除100,但是它不是闰年,是平年。

为什么2100不是闰年
我么记得小时候学的是可以 被4整除就是闰年
那么2100年为什么不是闰年啊 大侠
[/Quote]你应该去百度一下~~
jasmine 2011-03-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 yaozidan_001 的回复:]
2100年能整除100,但是它不是闰年,是平年。
[/Quote]
为什么2100不是闰年
我么记得小时候学的是可以 被4整除就是闰年
那么2100年为什么不是闰年啊 大侠
cranium 2011-03-07
  • 打赏
  • 举报
回复
贴个搜集了很久的一段代码。

bool isLeapYear(int year )
{
return year % 400 ? year % 100 ? year % 4 ? false : true : false : true;
}
無_1024 2011-03-07
  • 打赏
  • 举报
回复

#include <stdio.h>
void main()
{
int year,leap = 0;
scanf("%d",&year);
if( ( year % 4 == 0 && year%100!=0 ) || ( year%400 == 0 && year%100==0 ) )
printf("%d is ",year);
else
printf("%d is not ",year);
printf("a leap year.\n");
}

加载更多回复(2)
AutoLISP 培训教程 单元一:AutoLISP 主角潇洒登场 一. AutoLISP 是何方神圣? 1、AutoLISP 是 AutoCAD 的最佳拍檔! 2、AutoLISP 内含于 AutoCAD 软件内,不用另外花钱买! 3、AutoLISP 是强化 AutoCAD 最好、最直接的『程序语言』! 4、AutoLISP 易学、易用,即使不会程序设计的 AutoCAD 使用者,都能在最短的 时间内,写出令人惊 讶、赞叹的功能! 若说 AutoLISP 的出现,是替 AutoCAD 创造一片天的『最大功臣』,实不为过一点也不夸张! 5、AutoLISP 希望您去学习它、改善它、发挥它、享受它.真的!它的威力、魅力无穷! 二. AutoLISP 程序语言的特质分析: 学习 AutoLISP 是非常容易的,对初学者而言,即使没有学习过任何的程序语言,都能很快的上手,写 出精彩漂亮的 AutoLISP 程序! 语法简单:不用特殊的变量宣告,非常富有弹性,比起其它的程序语言,它的语法可说是非常简单而 有其独特的风格! 功能函数强大:除一般性的功能函数外,又拥有为数不少控制配合 AutoCAD 的特殊函数,再加上 AutoLISP 可直接呼叫执行所有 AutoCAD 的指令,以及掌握运用所有的 AutoCAD 系统变量,功能之强 大令人欣喜不已! 撰写的环境不挑剔:只要是一般的文书编辑软件都适用! 如:Windows 的记事本、PE2、PE3、DW3、 书中仙、汉书、EDIT....等 直译式程序: 不用再作编译,『即写即测、即测即用』,马上可以在 AutoCAD 中响应效果,马上就 有成就感! 横跨各作业平台:悠然自得,虽然 AutoCAD 有 DOS、Windows 版本之分但是 AutoLISP 却可在不改 写的原貌下,加载与执行! 三.撰写 AutoLISP 的动机? 1、欲强化 AutoCAD 原有指令时. 2、欲创造更有用的 AutoCAD 新指令. 3、欲简化繁琐的环境设定或绘图步骤时. 4、欲处理参数式绘图时. 5、欲做图面资料读文件、写文件. 6、欲做 AutoCAD 演示文稿展示时. 7、欲达到真正灵活掌控 AutoCAD 时. 8、欲提升自己跨上 AutoCAD 高手列车时. 四.AutoLISP 的效益评估? 1. 对公司负责人或设计主管而言: A. 也许某员工或干部花了 20 个小时撰写一个 AutoLISP 程序,表面上,这将近三天的时间,他连一张 图都没有画,甚至可能偶有发呆、沉思,若此程序一天可以替公司绘图部门节省 1 小时绘图时间,那 算一算,只要 20 天就抵销开发成本,而 20 天以后都是赚的,『用的愈久,省的愈多』! B. 若员工皆有此动力,在不影响正常工作,『鼓励』都来不及,那有『压抑』的道理,甚至还要派遣优 秀人员出去受训,学习更好的设计技巧与创意呢?! C. 千万不要因为您的不懂或压抑,SHOW 您的权威与 POWER,如此,不但对员工造成打击,甚至您可 能成为阻碍了公司计算机化进步的罪魁祸首 D. 当然,若要撰写的程序很多,内部设计人员的程序功力距离太远,达成需求的时间反而变得遥遥 无期,那倒不如求助于市面上已有的相关 AutoCAD 支持软件。 2. 对设计人员而言: A. 得到一笔提升绩效奖金呢? 当然,无形中,『AutoCAD 高手的封号』也将黄功力又往前迈出了一 大步,对个人的成长帮助匪浅,幸运的话,搞不好还可以袍加身,不亦乐乎!!! B. 『半桶水、响叮当』,千万不要因为会写 AutoLISP 程序而自傲、孤僻、嚣张起来,功力的增长, 只是让您有更多『服务他人、服务公司』的机会,若自恃过重,宁可不要! C. AutoLISP 程序功力的累进,是无远弗届的,千万不要『孤芳自赏』,『人外有人,天外有天』,也许 您觉得是『宝贝加三级』的程序,只是其它设计师基本程序中的一部份罢了! D. 既然 AutoLISP 是 AutoCAD 的『最大功臣』,当然不会轻易被舍弃,如此,您的学习,保证不会白 费! E. 『精益求精』、『虚心求教』、『用心学习、观摩』、『决心成为高手』 3.对程序本身而言: A. 少少的几行,却可能有『大大满意』的时候!!! B. 充份掌握了控制、 创造 AutoCAD 的 『尚方宝剑』 ,让您在 AutoCAD 的设计运作中 『得心应手』 , 享受无比的快乐与成就感!!! 五.如何有效的学习 AutoLISP ? 1、先由小程序着手,认识 AutoLISP 语法规定! 2、浏览所有的 AutoLISP 功能函数,重要的功能函数要熟记脑海,俗语说的好『一回生,二回熟』, 除非您不用心,否则没有学不好的道理!!! 3、要懂得偷懒:不要认为在绘图的过程中,繁琐的步骤是

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧