万年历相关资料

发布时间:2015-06-12 19:22:30

一、基本思路:  找到所求年月日的代码,相加后除以7,余数是几即为星期几。如今天是2007625日,年月日的代码分别是1325,相加得2929÷74……1,即今天为星期一。因此,这种算法的关键就转变成了寻找“年月日的代码”了。  二、找代码的方法:  1、年份的代码:最复杂一些。  看这一年的第一天是星期几就为几,如200511日是星期六就为6200611日是星期日就为7200711日是星期一就为1……如果这一年是闰年,3月以后的代码需要加1,如200811日是星期二,1月到2月的年份代码为23月到12月的年份代码就为3。  还可以根据周期进行推算,因为年份的代码是每7个数字为一个周期。  下列一组年份的代码可供记忆及推算:  2007年——1 20081月和2月——2  20083月起——3 2009年——4  2010年——5 2011年——6  20121月和2月——7 20123月起——1  2013年——2  2、月份的代码:首先要熟记歌谣,“鹿儿来,五岭山,虎一嘶,鹿儿死”,翻译成数字就是——  6 2 2 5 0 3 5 1 4 6 2 4  每个月份对应一个数字,即一月对6,二月对2,三月对2,依此类推。  3、日期的代码:最简单,原来是几号,代码即为几。  三、再举两个例子加以说明:  1200771日:  年月日的代码相加=1+5+177÷71,没有余数,则这一天是星期日。  2、奥运会开幕式:200888日  年月日的代码相加=3+1+81212÷71……5,这一天是星期五。 如果帮到您的话,可以好评吗?谢谢了!!!(右上角采纳)

(按一回归年3655小时4845.5秒)

  ①、普通年能被4整除且不能被100整除的为闰年。(如2004年就是闰年,1901年不是闰年)

  ②、世纪年能被400整除的是闰年。(2000年是闰年,1900年不是闰年)

  ③、对于数值很大的年份,这年如果能整除3200,并且能整除172800则是闰年。如172800年是闰年,86400年不是闰年(因为虽然能整除3200,但不能整除172800)(此按一回归年3655h48'45.5''计算)。

  此外,如依照现有太阳年的长度与上述闰年规则,每8000年又约差一日,因此约翰·赫歇尔提议每逢4000的倍数不闰,如西元4000年。但距此一年份来临尚有约二千年之遥,因此还未曾真正纳入规则或实施过。又由于地球公转速率的不稳定与众多影响因素,届时是否需要纳入此规则仍有疑问。

  原因:若一年按3655h48'46''(此时86400年也是闰年)计算,一年日数必须是整数,不便将零时数计入,所以取365天为一年,则余54846 ,积至4年约满一 日,所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23154秒闰一日,欠缺4456秒;积至100年(25闰)时就欠缺184320秒,约合3 / 4日,所以满100年不闰;此时又余51640秒,积至400年余21640秒又闰;又欠缺25320秒,积至3200年计欠缺23640秒,所以满3200年不闰;此时又余5320秒,积至86400年刚好24 时又一闰,这是不余不欠,需重计算,所以按阳历计算就有上面的闰年规则。

按一回归年3655h48'45.5''计算:3200年多出16000小时153600145600 =18600小时2640秒,共32*24+8=136个闰年=776*24=18624小时 >18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了2640秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54个周期 54*2640=14042160=24小时。[2]

公历天数编辑地球绕太阳一周实际为365.2422天(回归年),按一年365天计算,每年少0.2422天,因此,400年中需置97个闰年。闰年在2月末加上一天全年366天。这样经过3333年才有一天的误差。

判定公历闰年遵循的一般规律为:四年一闰,百年不闰,四百年再闰。

公历闰年的精确计算方法(按一回归年3655小时4845.5秒):

①、普通年能被4整除而不能被100整除的为闰年。(如2004年就是闰年,1900年不是闰年)

②、世纪年能被400整除而不能被3200整除的为闰年。(如2000年是闰年,3200年不是闰年)

③、对于数值很大的年份能整除3200,但同时又能整除172800则又是闰年。(如172800年是闰年,86400年不是闰年)

又若按照 (按一回归年3655小时4846秒)公元前闰年规则如下:

①、普通年能被4整除而不能被100整除的为闰年。(如2004年就是闰年,1900年不是闰年)

②、世纪年能被400整除而不能被3200整除的为闰年。(2000年是闰年,3200年不是闰年)

③、对于数值很大的年份能整除3200,但同时又能整除86400则又是闰年.(86400年是闰年)

原因:一年按3655h48'46''计算,一年日数必须是整数,不便将零时数计入,所以取365天为一年,则余54846 ,积至4年约满一 日,所以4年一“闰日”,谓之“闰年”,无“闰日”之年为平年,即平年365天,闰年366天。但到4年之时,仅有23154秒闰一日,欠缺4456秒;积至100年(25闰)时就欠缺184320秒,约合3 / 4日,所以满100年不闰;此时又余51640秒,积至400年余21640秒又闰;又欠缺25320秒,积至3200年计欠缺23640秒,所以满3200年不闰;此时又余5320秒,积至86400年刚好24 时又一闰,这是不余不欠,需重计算,所以按阳历计算就有上面的闰年规则。

按一回归年3655h48'45.5''计算:3200年多出16000小时153600145600 =18600小时2640秒,共32*24+8=136个闰年=776*24=18624小时 >18600小时,所以只能算到775个闰年,3200不是闰年,于是775*24=18600,多出了2640秒怎么办需要多少个周期弥补?答案是54个周期,为172800年,因为172800/3200=54个周期 54*2640=14042160=24小时。

3公元前闰年规则编辑1,非整百年:年数除4余数为1是闰年,即公元前159……年;

2,整百年:年数除400余数为1是闰年,年数除3200余数为1,不是闰年,年数除1728001又为闰年,即公元前401801……年。

4年的种类编辑年有三种:地球绕日一周,历三百六十五日六小时九分九秒,谓之“恒星年”;太阳过近地点循黄道东行一周,复过近地点,历三百六十五日六时十三分四十八秒,谓之“近点年”;太阳过春分点,循黄道东行一周,复过春分点,历三百六十五日五小时四十八分四十六秒,谓之“回归年”,亦称“岁实”。

因二分点(春分点秋分点)每年沿黄道向西逆行约五十秒,故回归年较恒星年之时间为短,相差二十分二十三秒,谓之“岁差”。 此三种年之时间不同,欲使每年之节气寒暑不变,故取回归年为制历之年。

对于回归年之时间,有记住之必要,为便于记忆,编一歌诀如下:

地球绕日一周年,要知时间有多少?三六五日加五小时四十八分四六秒。

5闰年编辑由一月一日至次年一月一日谓之一年,年长本应与岁实(回归年)相等,然而一年之日数,必须是整数,不便将奇零之时数计入,故以365日为一年,每年余5小时4846秒,至四年约满一日,故每四年增加一日,为闰日,谓之“闰年”。

无闰日这年,谓之“平年”,平年365日,闰年366日。 但四年之闰余,仅23154秒,今闰一日,未免过多,超过之4456秒,积至二十五闰,为175824秒,约合一日之3/4,故每满百年废一闰,至第400年又不废。如是每四年置一闰,每400年减三闰,计超过2小时5320秒,须八个400年后,即3200年后,始补足此一日之差。

闰日加在二月里,所以平常年份每年365天,二月为28天,闰年为366天,二月为29天。

闰年的计算方法

①、普通年能被4整除的为闰年。(如2004年就是闰年,1901年不是闰年)

②、世纪年能被400整除的为闰年。而3200年的倍数不是闰年。86400年的倍数又是闰年。(2000年是闰年。3200年、6400年、……年不是闰年。86400年、172800年又是闰年)

128年废一闰法。即每128年的倍数不闰。需86400年再闰。

纪元是从传说的耶稣诞生那年算起。 公历每月有月大、月小和月平的说法,月大为31天,月小为30天,月平只有2月,为28天(闰年29天)。

公历一年中每月天数

C语言编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。

2010-04-19 21:41 liupan1215 | 分类:C/C++ | 浏览4528

编程序实现如下功能:输入任意一个日期的年、月、日的值,求出是星期几并输出。 分享到:

2010-04-22 17:38 提问者采纳

#include

void main ()

{

int y,m,d,c,s,w;

printf("请输入8位年月日,以空格隔开:");

scanf("%d%d%d",&y,&m,&d);

if (m==1) c=d;

else if (m==2) c=31+d;

else if (m==3) c=31+28+d;

else if (m==4) c=31+28+31+d;

else if (m==5) c=31+28+31+30+d;

else if (m==6) c=31+28+31+30+31+d;

else if (m==7) c=31+28+31+30+31+30+d;

else if (m==8) c=31+28+31+30+31+30+31+d;

else if (m==9) c=31+28+31+30+31+30+31+31+d;

else if (m==10) c=31+28+31+30+31+30+31+31+30+d;

else if (m==11) c=31+28+31+30+31+30+31+31+30+31+d;

else if (m==12) c=31+28+31+30+31+30+31+31+30+31+30+d;

if (m>2)

{if (y%100==0) {if (y%400==0) c=c+1;}

else if (y%4==0) c=c+1;

}

s=(y-1)*365+(y-1)/4-(y-1)/100+(y-1)/400+c;

w=s%7;

switch (w)

{ case 0: printf("星期日");break;

case 1: printf("星期一");break;

case 2: printf("星期二");break;

case 3: printf("星期三");break;

case 4: printf("星期四");break;

case 5: printf("星期五");break;

case 6: printf("星期六");break;

printf("\n"); }}

万年历相关资料

相关推荐