关于闰年:
地球的公转周期是365.2422个太阳日,按这个天数,地球围绕太阳公转一周后,并不是整整365个昼夜。因此,如果按照每年365天算,则每到四年,地球就和四年前的位置差了近一天。这一天的公转距离需要闰一日来补足,因此一般每四年就会出现一个闰年。
0.2422 * 4 = 0.9688 < 1,因此每闰一次都会有点矫枉过正,造成了0.0312天的误差。每100个闰年(即400年)会造成3.12天的误差,为了减掉这个误差,人们又规定,在第25个、第50个、第75个“闰年”处不闰(减掉多余的3天),而在第100个闰年处保持闰年。
为了好计算,人们这么制定了规则:
1、如果年数可以整除400,则必定是闰年。否则判断2。
2、如果年数可以整除100,则不是闰年。否则判断3。
3、如果年数可以整除4,则是闰年。否则不是闰年。
按照这个规则,1900年不是闰年,而2000年是,2100年则不是闰年。
0.2422 * 4 = 0.9688 < 1,因此每闰一次都会有点矫枉过正,造成了0.0312天的误差。每100个闰年(即400年)会造成3.12天的误差,为了减掉这个误差,人们又规定,在第25个、第50个、第75个“闰年”处不闰(减掉多余的3天),而在第100个闰年处保持闰年。
为了好计算,人们这么制定了规则:
1、如果年数可以整除400,则必定是闰年。否则判断2。
2、如果年数可以整除100,则不是闰年。否则判断3。
3、如果年数可以整除4,则是闰年。否则不是闰年。
按照这个规则,1900年不是闰年,而2000年是,2100年则不是闰年。
/*
2012年9月30日0时39分
该程序功能是:输入年份,输出该年是闰年还是平年。
*/
# include <stdio.h>
int main(void)
{
int y;
begin:
printf("输入年份:");
scanf("%d", &y);
if(y%400==0)
printf("%d年是闰年!\n", y); //能被400整除,一定会是闰年;
else if (y%100!=0 && y%4==0)
printf("%d年是闰年!\n", y);//不能被100整除,但能被4整除的是闰年(不矛盾,如果能整除400判定为了闰年,就不会执行该语句);
else
printf("%d年是平年!\n", y);//不符合以上两个条件后的情况均为平年。即y%100==0 || y%4!=0;
goto begin;
return 0;
}
/*
该程序在VC++6.0中的输出结果是:
--------------------
输入年份:1990
1990年是平年!
输入年份:2004
2004年是闰年!
输入年份:
--------------------
*/