万年历是怎么计算的推算天干太阳(怎样推演万年历)
民间精密推算万年历,精密推算万年历口诀诀窍
精密推算万年历
,许多许多年以前,在山青水秀的定阳山下,有个不太大的村庄。村头山坡上,有间小石屋,住着一个名字叫万年的青年。他家境贫寒,以打柴挖药为生。那时节令很乱,弄得庄稼人无法种田。万年是个有心计的青年,想把节令定准,那么,不知从哪里下手。
一天,万年上山打柴,坐在树下歇息,树影的移动启发了他,他就制了一个日晷,测日影计算一天的长短。那么,天有云阴雾雨,作用与影响测记。他就想再做一件记时器具,好弥补补充日晷的不足。那天,他上山挖药,来到泉边喝水,崖上的泉水有节奏地滴答滴答地响着,挑起了他的注意和提防。他望着泉水出。思索了一阵,回到家中,画了画,试了试,做成了五层漏壶。从此,他测日影,望漏水,勤勤奋奋。一点一点的,他发现每隔三百六十多天,天时的长短就会从头重复一遍。最短的一天在冬至。
那时的叫祖乙。节令失常,使他很着急。就召集百官。朝议节令失常之困。节令官叫阿衡,不晓得日月运行的规律,就论是人们作事不慎,得罪了。只有跪祭,才可得到上神的宽恕。祖乙就素沐浴。领百官去天坛,并传谕全国,设台祭天。
但祭来祭去,不见收效,时令照旧很乱;各地的老百姓为了修建祭台又得服役,又总结出捐,真是胆汁拌黄连。苦中加苦。万年忍不住了。就带着他的日晷和漏壶会见。
万年见了,说了冬至点,讲了日月运行周期。祖乙听罢,心中大喜,即令大兴土木,在天坛前修建日月阁,筑上日晷台,造上漏壶亭。又拨了十二个服侍万年。万年让六个守日晷,六个守漏壶,精心记录,按时报告。
一天,祖乙让阿衡去日月阁询问制历情况,万年指着草历说:”日出日落三百六,循环往复从头来。草木枯荣分四时,一岁月有十二圆。”阿衡一听,深觉是理,心中却不安起来。他暗想:要是万年把节令定准,心喜,重用万年,谁还听我阿衡的?阿衡想啊想啊,一心想把万年除掉。
那天阿衡打听出一个善射的利客,就派人请到家中,摆上酒筵,说明原由,许以重礼。刺客答应当夜就去行刺。天交二鼓,刺客趁酒兴离开了阿衡,向日月阁奔去。怎奈天坛周围,日月阁下,有卫士严守,刺客不能近前,就拉弓搭箭向日月阁上正观星象的万年射去。谁知刺客饮酒过多,眼睛发昏,飞箭只射中万年的胳膊。万年哎呀一声倒在地上,众急呼拿贼。卫士们听到喊声,一齐出动,捉住刺客,扭见。
祖乙问明实情,传令将阿衡收了监,又立印出宫登上日月阁看望万年。万年特别感动,指着申星说:”申星追上了蚕百星,星象复原,夜交子时,旧岁已完,时又始春,望定个节吧。”
祖乙说:”春为岁首,就节吧。爱卿入阁,三载不出,披肝沥胆,以月圆为准制出太农历,真是功高德重。如今爱卿被奸佞暗算,且随我到宫中调养吧。”
万年说:”太农历固然草创,不过还不十分准确,岁尾还剩有点滴时辰。如不把这岁末尾时润进去,日月如梭,过来过去又会错历。臣负所望,深受之恩,愿碎心日月阁,细心精密推算,把草历定准。”
就这样,万年在日月阁中,认真观察草木麦菽的荣枯,精心精密推算,把岁末尾时积日成月润了进去。那年五月,祖乙到天坛行祭,祭罢,又登上日月阁,把祭神的五月鲜桃赐给万年。万年献上太农历,祖乙望着日夜劳累的万年,眉也白了,须也白了,深受感动,就把太农历定名为万年历,还封万年为日月寿星。于是,后来人们也把春节称做年,每每过新年之时屋里挂上寿星图,象征新岁添寿,也是对功高德重的万年寄以怀情。
上面便是与精密推算万年历有关的内容,是关于祖乙的共享。看完精密推算万年历口诀诀窍后,希望这帮助到大家!!!
万年历上如何推算的?
万年历是根椐历法精密推算出来的。
精密推算年、月、日的长度和它们之间的联系,制订时间顺序的金科玉律叫"历法"。历书是排列年、月、节气等供人们查考的工具书。历书在咱们国家古时称通书或时宪书,在封建王朝的时代,因为它是皇帝颁发的,故而又称"皇历"。
人们依据地球自转,产生昼夜交替的现象形成了"日"的概念;依据月亮绕地球公转,产生朔望,形成"月"的概念,依据地球绕太阳公转产生的四季交替现象而形成了"年"的概念。这三个概念所根据的物质运动是相互单独的。
依据精确测定,地球绕太阳公转一周的时间约为365、二十四22平太阳日,这叫一个回归年。并且从一次新月到接连发生的下一次新月的时间间隔为29、5306平太阳日,这叫一个朔望月。以回归年为单位,在一年中安排多少个整数月,在一个月中又安排多少个整数天的方式方法和如何选取一年的起算点的方式方法就叫历法。
历法的原则
不管哪一种历法,皆有一个协调历日周期和天文周期的关系问题。在原则上,历月应力求等于朔望月,历年应力求等于回归年。但因为朔望月和回归年皆不是整日数,因 此,历月须有大月和小月之分,历年须有平年和闰年之别。
通过大月和小月,平年和闰年的适当搭配和安排,使其平均历月等于朔望月,或平均历年等于回归年。这便是历法的主要内容。
上面的内容参考:知识混装大无极—中国历法
万年历查199O年冬月初五未时和1991年八月二十一日午时今年出嫁什么日子利1。 精密推算年干支口诀诀窍 掌上精密推算年干支,支子花甲起根源。 阳支都是旬开始,天干为甲尾四年。 隔位逆推十年正,顺推年尾五零三。 逐支加减六十数,掌上精密推算千万年。 精密推算方法:“掌上精密推算年干支,支子花甲起根源。”此法是将地支排列在掌中,手掌上精密推算年干支的方式方法。 first of all,在掌上将地支定位(图一),紧接着以地支子位为花甲子的开始,可定为1864,19二十四,也可定为1984年???,其年都是甲子年。“阳支都是旬开始,天干为甲尾四年。”地支中的子,寅,辰,午,申,戌都是阳支,而且也是每旬的开始,天干都为甲,即甲子,甲戌,甲申,甲午,甲辰,甲寅,这几个年的公历尾数均为四。“隔位逆推十年正,顺推年尾五零三。”天干十数,地支十二数,天干与地支组合天干每循环一次,地支总与下二支(旬空)。其中余下的第1支便是下旬的开始。我们从地支子位开始,隔一位逆推,即从子位逆推隔亥到戌,恰是甲戌旬的开始,再逆推隔一位酉至申为甲申旬开始,------年尾数都为四,年间隔都是十年。在确定旬开始以后,以该年尾数四为起点,从下支开始挨位顺推,其公历年尾数分别为5,6,8,9,0,1,2,3,而后又是下旬的开始。“逐支加减六十数,掌上精密推算千万年”掌握此法精密推算,假如将甲子年定为1984年,按口诀诀窍可知1994年为甲戌,2004年为甲申,2014年为甲午等。确定每旬开始的公历年数后,可依据需要顺推任何一年的天干地支,虽意性很大,可推千年万年的天干地支。 2。精密推算月、时干支口诀诀窍 天干五合前为主,月时干序一至五。 年干隔数配寅月,日元配时本数身。古往今来,年上起月,日上起时,是按天干五合的方式方法,分成五种情况,即甲、己之年(日)定月(时)的方式方法相同------。我们也采用这一个方法,并一前一天干为主,即甲、己以甲为主,乙、庚以乙为主,------,配上序数甲为1,乙为2,丙为3,丁为4,戊为5(图二),成为精密推算月、时的固定序数。“年干隔位配寅月”,精密推算某年的月干,先看该年干与何干相合,紧接着按“天干五合前为主”的方式方法,查出该干的序数,并设此干为零,按序数隔干确定寅月的天干。如98年是戊寅,戊癸干合,戊年与癸年的天干相同,属于同一种定寅月天干法。五的序数尾5 ,从5 开始,隔己、庚、辛、壬、癸五天干到甲,就能够算出98年寅月的天干是甲,其他月的天干就好精密推算了。“日元配时本身数” ,此句精密推算方法与年干定寅月天干发大致相同,只是在确定日元合干以后,从合之干的前干本身算起,按序数查,到何干,便是该日子时的天干。如己日,己与甲同一类型,以甲干为主,甲的序数为“1”以本身配子时,该日子时的天干为甲,即甲子时。同样,癸日子时吧的天干,因戊癸合干,以五为主,序数为5,从5开始数到壬,癸日子时为壬子时。冲跟克相视:这种呢要硬记,子→午,丑→未,寅→申,卯→酉,辰→戍,已→亥它们叫冲咱们国家的年历如何算?
我国使用的通常是阴阳历,年历主要有阳历,农历,阴阳历三种。目前全地球最通用的是阳历。
阳历以地球公转周期为根据;农历以月相变化为根据;阴阳历结合两者特点。
阳历年固定在365天或366天不同的是,农历年相比阳历年在天数上有的时候会相差一个月。为了协调阳历年与农历年之间的天数,于是产生了阴阳历,即现行的阴历,采用的方式方法是在历法中加入24节气以及“19年7闰”法(即在19个阴历年中加上7个闰年。阴历闰年由于多了个闰月,因这一年有383天-385天,而阴历平年一般有353天-355天)。
咱们国的历法在几千年的过程中,不断改进、充实、完善,逐渐演变为此刻所用的阴历。阴历实质上就是一种阴阳历,以月亮运动周期为主,同时利用节气与“19年7闰”法兼顾预示地球绕太阳运动的周期。
更多阅读:
1。阴历正月初一 即春节 这个不言而喻了吧,俺们这里(招远)夜里十二点吃年夜饭,一点多开始出去到亲戚家拜年。
2。阴历正月十五 元宵节 古时也称“上元”节,有吃元宵、踩高跷、猜灯谜等习俗。我们胶东人这一天耍秧歌,不晓得其他地方是还是不是如此的。
3、二月初二 龙抬头 也算传统性节日。
4。阴历三月初八(此刻似乎是阳历4月4日至6日之间)清明节 其实也就是说清明节前一天是“寒食节”,清明节是中国传统节日,也是最要紧的祭祀节日,是祭祖和上坟的日子。
5。农历五月初五日 端午节 相传屈原五月五日投汨罗江而死,后人为纪念屈原而设立端午节。不过千万不要脸的韩国人却说端午节是他们的,真是脸皮厚到极致。
6。阴历七月初七 七夕节
7。阴历8。15 8。15中秋佳节 这是个团圆的节日,这一天要吃月饼赏月。
8。农历九月初九 重阳节 那首令人称快的《九月九日忆山东兄弟》:独在异乡为异客,每逢佳节倍思亲。遥知兄弟登高处,遍插茱萸少一人。
9。阴历十一月二十二 冬至 冬至大如年,我们胶东有吃饺子的风俗,并且有“冬至的饺子夏至的面,哪个不吃谁是王八蛋”的讲法。
10。阴历腊月初八 腊八节 喝腊八粥。
11。腊月二十三 “过小年”,这一天放鞭炮祭灶,送灶王爷上天。
12。阴历十二月大年三十(大年三十晚上叫除夕) 据《吕氏春秋·季冬记》记录载入,古代人们在新年的前一天,用击鼓的方式方法来驱除“疫疠之鬼”,来年才会无病无灾。
参考资料:知识混装大无极:阴阳历
参考资料:知识混装大无极:我国传统节日
公历知道,是1。3。5。七、八、十、十二是大三十一天,平年二月二十八天,闰年二月二十九天。其它都为30天。阴历不晓得!!!阳历以地球公转周期为根据;农历以月相变化为根据;阴阳历结合两者特点。
年历主要有阳历,农历,阴阳历三种。目前全地球最通用的是阳历,我国使用的通常是阴阳历。
阳历年固定在365天或366天不同的是,农历年相比阳历年在天数上有的时候会相差一个月。为了协调阳历年与农历年之间的天数,于是产生了阴阳历,即现行的阴历,采用的方式方法是在历法中加入24节气以及“19年7闰”法(即在19个阴历年中加上7个闰年。阴历闰年由于多了个闰月,因这一年有383天-385天,而阴历平年一般有353天-355天)。
更多阅读:
阴阳历是兼顾月亮绕地球的运动周期和地球绕太阳的运动周期而制定的历法。阴阳历历月的平均长度接近朔望月,历年的平均长度接近回归年,是一种“阴月阳年”式的历法。它既能使每个年份基本符合季节变化,又使每一月份的日期与月相对应。它的缺点是历年长度相差过大,制历复杂,有害于记忆。咱们国的阴历就是一种典型的阴阳历。
咱们国的历法在几千年的过程中,不断改进、充实、完善,逐渐演变为此刻所用的阴历。阴历实质上就是一种阴阳历,以月亮运动周期为主,同时利用节气与“19年7闰”法兼顾预示地球绕太阳运动的周期。
参考资料:阴阳历-知识混装大无极
谁能帮我解释这个C语言万年历流程每个步骤之义。在每一步后面写上解 。。。
#include <stdio。h> %头文件char MonthDay[]={31,28,31,30,31,30,31,31,30,31,30,31}; %每月天数数组char MonthDayLeap[]={31,29,31,30,31,30,31,31,30,31,30,31}; %闰年每月天数char *WeekDayName[]={"星期日","星期一","星期二","星期三","星期四","星期五","星期六"};/*获取按键值*/char getkey(){ char c,s⓾; scanf("%s",s); %输入想用功能的序号 c=s[0]; return c; %返回输入的序号由于只有1·2·3·4所以只返回第1位}void printtab(int n){ while (n>0) { printf("\t"); 空格 n--; }}/*判断是否为闰年*/char isLeapYear(int y){ return((y%4 == 0 && y%100 != 0 || y%400 == 0)?1:0); 年数取余4等于0且取余100不等于0或取余400等于0为真时返回1要不然返回0}/*计算星期几*/int WeekDay(int y,int m, int d) %y是年m是月d是日{ int week; if(m==1) m=13; if(m==2) m=14; week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 算星期的方程 return week;}/*查询星期*/ char queryweekday(){ int y,m,d,week,c=0; do { printf("请输入年月日(oooo oo oo)\n"); 输入时间 scanf("%d %d %d",&y,&m,&d); week=WeekDay(y,m,d); 调用上一个函数计算星期 printf("%d年%d月%d日是星期%s,是否继续查询(Y/N)?",y,m,d,WeekDayName[week]); 输出 c=getkey(); 输入是否查询 } while (c=='Y' || c=='y'); return c;}/*显示月份*/void showmonth(int y,int m){ int d,dt,week; week=WeekDay(y,m,1); if (isLeapYear(y)) dt=MonthDayLeap[(m-1)%12]; 闰年算法 else dt=MonthDay[(m-1)%12]; 平年算法 for (d=0;d<7;d++) { printf("\t%s",WeekDayName[d]); } printf("\n"); printtab(week); for (d=1;d<=dt;d++) { printf("\t%6d",d); if (WeekDay(y,m,d)==6) printf("\n"); } printf("\n");}/*显示月份*/char printmonth(){ int y,m,c=0; do { printf("请输入年月(oooo oo)\n"); scanf("%d %d",&y,&m); printtab(3); printf("%d年\t%d月\n",y,m); showmonth(y,m); 调用函数计算月份 printf("是否继续查询(Y/N)?"); c=getkey(); } while (c=='Y' || c=='y'); return c;}/*显示年份*/char printyear(){ int y,m,c=0; do { printf("请输入年份(oooo)\n"); scanf("%d",&y); printtab(3); printf("%d年年历\n",y); for (m=1;m<=12;m++) { printtab(4); printf("%d月\n",m); showmonth(y,m); } printf("\n是否继续查询(Y/N)?"); c=getkey(); } while (c=='Y' || c=='y'); return c;}/*退出查询*/char toexit(){ char c; printf("是否要真的退出(Y/N)?"); c=getkey(); if(c=='Y' || c=='y') return 1; else return 0;}/*万年历主界面查询*/char getmenu(){ printf("\n***************************\n"); printf(" \t万年历查询流程\n"); printf("1\t依据日期查星期几\n"); printf("2\t显示某月的日历\n"); printf("3\t显示某年的日历\n"); printf("4\t退出\n"); printf("***************************\n"); printf("请选择(1-4):"); return getkey();}int main(int argc, char *argv[]){ char doexit=0,choose; do { /*获取菜单*/ choose=getmenu(); 调用函数得到所选的功能项 /*分类处理*/ switch (choose) { case '1': queryweekday(); 星期 break; case '2': printmonth(); 月 break; case '3': printyear(); 年 break; case '4': doexit=toexit(); 退出 break; default: break; } } while (!doexit); return 0;}好多函数调用的。你先看main函数,流程先执行main函数的。在main中先调用了getmenu()这个函数,紧接着你就转到getmenu()这个函数查看。先是有一些输出。最后有一个return getkey();又转到getkey()这个函数,这个函数是接受字符的输入。执行完后,执行main中的分类处理。假如选择1,转到queryweekday()函数。queryweekday()函数中先要输入年月日,紧接着又调用WeekDay(y,m,d)函数。这个函数依据输入的年月日判断是星期几, week=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7; 输出年月日是星期几。紧接着选择,假如输入Y,又跳转回queryweekday()函数中输入年月日。。。。。。选择N(这个没有定义,选择其它也同样)就回到getmenu()这个函数选择输入1-4、其它也差不多的了。皆是一堆函数的调用,你记得先从main函数开始就行了。每一个都写 不是很麻烦 你哪里不会 说下
C语言流程设计 万年历查询流程。
实验名称:万年历的查询及打印【内容】:设计一个查询并打印万年历的流程。【步骤】:1.画出流程程序图;2.编写流程;3.调试流程,对调试过程中出现的问题进行剖析,找出错误的缘故并予改正;4.写出通过调试并修改正确的原流程。【要求】:1.流程运行后,first of all在屏幕上显示主菜单:1.查询某年某月某日是星期几2.查询某年是否是闰年3.打印某年的全年日历4.退出2.在主菜单中输入1后,显示:“请输入年月日(XXXX,XX,XX)”运行后输出:XXXX年XX月XX日是星期X,是否继续查询(Y/N)?假如输入Y,则重新显示“请输入年月日(XXXX,XX,XX)”,要不然回到主菜单。3.在主菜单中输入2后,显示:“请输入要查哪一年?(XXXX)”运行后输出:XXXX年是(否)是闰年,是否继续查询(Y/N)?假如输入Y,则重新显示,“请输入要查哪一年?(XXXX)”,要不然回到主菜单。4.在主菜单中输入3后,显示:“请输入要打印的年份(XXXX)”运行后输出XXXX年的日历,格式为:XXXXX(月数)0123456SMTWTFSxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxX(月数)0123456SMTWTFSxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx。。。。。 运行完后显示:“是否继续打印(Y/N)?” 假如输入Y,则重新显示,“请输入要打印的年份(XXXX)”,要不然回到主菜单。5.在主菜单中输入4后,显示:“是否要真的退出(Y/N)?”假如输入Y,结束流程运行,要不然重新显示主菜单。【提示】:1、闰年计算:满足下列二者之一,是闰年:能被4整除,但不能被100整除;能被4整除,且能被400整除。2、闰年的二月是29天,平年的二月是28天3、星期几的计算:S=X-1+(X-1)/4+(X-1)/100+(X-1)/400+CX是年份,C是该年从元旦开始到到这一日的天数。S/7的余数既是星期数例1:1982年12月26日因为1982年不是闰年(不能被4整除),所以该年的二月是28天。C=31+28+31+30+31+30+31+31+30+31+30+26=360(1月到11月的天数+12月的实际天数)S=1982-1+(1982-1)/4+(1982-1)/100+(1982-1)/400+360=2821、3925S/7=2821/7=403余数是0,所以该日是星期天。例2:两千年3月8日因为两千年是闰年(能被4整除,又能被100和400整除),所以该年的二月是29天。C=31+29+8=68(1月到2月的天数+3月的实际天数)S=2000-1+(2000-1)/4+(2000-1)/100+(2000-1)/400+68=2551、757S/7=2551/7=364余数是3,所以该日是星期三。#includeintleap(intyear){if(year%4==0&&year%100!=0||year%400==0)//判断是否是闰年return1;elsereturn0;}intdays_month(intmonth,intyear)//判断大月和小月{if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//找出大月return31;if(month==4||month==6||month==9||month==11)//找出小月return30;if(month==2&&leap(year)==1)return29;//判断二月是29天还是29天elsereturn28;}intfirstday(intmonth,intyear){intw;w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;//判断每一个月开始的第1天是星期几returnw;}main(){inti,j=1,k=1,a,b,month,year;printf("\ninputmonthandyear:\n");scanf("%d%d",&month,&year);//输入月和年b=days_month(month,year);a=firstday(month,year);printf("sunmontuewedthufrisat\n");//输出对应当月的日历if(a==7){for(i=1;i<=b;i++){printf("%4d",i);if(i%7==0){printf("\n");}}}if(a!=7){while(j<=4*a){printf("");j++;}。。。#includeintleap(intyear){if(year%4==0&&year%100!=0||year%400==0)//判断是否是闰年return1;elsereturn0;}intdays_month(intmonth,intyear)//判断大月和小月{if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)//找出大月return31;if(month==4||month==6||month==9||month==11)//找出小月return30;if(month==2&&leap(year)==1)return29;//判断二月是29天还是29天elsereturn28;}intfirstday(intmonth,intyear){intw;w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;//判断每一个月开始的第1天是星期几returnw;}main(){inti,j=1,k=1,a,b,month,year;printf("\ninputmonthandyear:\n");scanf("%d%d",&month,&year);//输入月和年b=days_month(month,year);a=firstday(month,year);printf("sunmontuewedthufrisat\n");//输出对应当月的日历if(a==7){for(i=1;i<=b;i++){printf("%4d",i);if(i%7==0){printf("\n");}}}if(a!=7){while(j<=4*a){printf("");j++;}for(i=1;i<=b;i++){printf("%4d",i);if(i==7*k-a){printf("\n");k++;}}}printf("\n");