输入一个年份y,求出从公元1年1月1日到y年1月1日,总共有多少天,并求出y年的1月1日是星期几
农历及农历干支纪年、纪月、计日、计时方法
⼀年分成⼗⼆⽉,⼆⼗四节紧相连。
按照公历来推算,每⽉两⽓不改变。
上半年是六⽢⼀,下半年逢⼋⽢三。
这些就是交节⽇,有差不过⼀两天。
⼆⼗四节有先后,下列⼝诀记⼼间:⼀⽉⼩寒接⼤寒,⼆⽉⽴春⾬⽔连;惊蛰春分在三⽉,清明⾕⾬四⽉天;五⽉⽴夏和⼩满,六⽉芒种夏⾄连;七⽉⼤暑和⼩暑,⽴秋处暑⼋⽉间;九⽉⽩露接秋分,寒露霜降⼗⽉全;⽴冬⼩雪⼗⼀⽉,⼤雪冬⾄迎新年。
抓紧季节忙⽣产,种收及时保丰年。
⽇的定义:以地球⾃转⼀周为⼀⽇。
其中以太阳离地平线最远的⼀个时⾠为⼦时,作为⼀天的第⼀个时⾠。
那么,⼦时就是在现在0:00前后⼀个⼩时之内。
那么,这样,夏历中的⼀天的开始是在当天的23:00。
⽉策规则:朔⽇为每⽉起点(初⼀⽇);朔⽇(⽉初⼀⽇)到下个朔⽇(下⽉初⼀⽇)有多少天、这⽉就有多少天。
有30天为⼤⽉、有29天为⼩⽉;唐朝(公元619年)以前⽤的是平朔、唐朝(公元619年)以后⽤的是定朔。
年策与置闰规则:以冬⾄⽇必须在⼦⽉(寅正11⽉),上个冬⾄⽉(⼦⽉农历寅正11⽉)到下个冬⾄⽉(⼦⽉\农历寅正11⽉)有12个⽉就不置闰、上个冬⾄⽉(⼦⽉、农历寅正11⽉)到下个冬⾄⽉(⼦⽉、农历寅正11⽉)如有13个⽉就要置闰、以上个冬⾄⽉(⼦⽉农历寅正11⽉)后的第⼀个没中⽓⽉设为闰⽉、在⼏⽉后⾯就称闰⼏⽉。
例如:2032年农历冬⾄⽉到2033年农历冬⾄⽉之间有12个⽉,就不置闰。
2033年农历冬⾄⽉到2034年农历冬⾄⽉有13个⽉就必须置闰,在2033年冬⾄⽉(11⽉)后的第⼀个⽆中⽓之⽉就是2033年冬⾄⽉后的第1个⽉,就定为闰⽉。
它正好在冬⾄⽉(⼦⽉[11⽉])后,所以就叫闰⼦⽉(闰11⽉)。
农历⼲⽀纪年、纪⽉、计⽇、计时⽅法:天⼲地⽀六⼗花甲表:甲⼦⼄丑丙寅丁卯戊⾠⼰巳庚午⾟未壬申癸⾣甲戌⼄亥丙⼦丁丑戊寅⼰卯庚⾠⾟巳壬午癸未甲申⼄⾣丙戌丁亥戊⼦⼰丑庚寅⾟卯壬⾠癸巳甲午⼄未丙申丁⾣戊戌⼰亥庚⼦⾟丑壬寅癸卯甲⾠⼄巳丙午丁未戊申⼰⾣庚戌⾟亥壬⼦癸丑甲寅⼄卯丙⾠丁巳戊午⼰未庚申⾟⾣壬戌癸亥⼲⽀纪年法:甲⼦为第⼀年,⼄丑为第⼆年,丙寅为第三年……六⼗年为⼀周。
实验题目
实验题目
1. 闰年的计算
地球的公转周期是365.2422个太阳日,按这个天数,地球围绕太阳公转一周后,并不是整整365个昼夜。
因此,如果按照每年365天算,则每到四年,地球就和四年前的位置差了近一天。
这一天的公转距离需要闰(多)一日来补足,因此一般每四年就会出现一个闰年。
0.2422 * 4 = 0.9688 < 1,因此每闰一次都会有点矫枉过正,造成了0.0312天的误差。
每100个闰年(即400年)会造成3.12天的误差,为了减掉这个误差,人们又规定,在第25个、第50个、第75个“闰年”处不闰(减掉多余的3天),而在第100个闰年处保持闰年。
为了好算,人们这么制定了规则:
闰年的计算方法,既是程序设计语言中常用的例题,又是现实程序设计中常用而且回避不了的一个问题。
例如:判断下列年份是否为闰年?
1918,1937, 1949, 1984,2000, 2010。
2. 计算y年m月共有多少天的函数:getLastDay( y,m)
3. 计算从公元1年1月1日到 y年m月d日的天数(含两端)
例如: 从公元1年1月1日到1年2月2日的天数是 31+2=33天
分析:
要计算从公元1年1月1日到 y年m月d日的天数,我们分成三个部分:
(1)计算从公元1年到 y-1 年,是整年,每年是 365天或 366天(如果某
年是闰年)
(2)对于第y年, 当m>1 时,先计算1~ m-1月整月的天数
(3)最后加上零头(第 m 月的 d 天)即可
这种方法,在程序设计中叫做“分而治之”。
公历历法
【公历历法】公历历法很简单,年有润年(LeapYear)和平年之分,平年每月天数恒为:月份一二三四五六七八九十十一十二天数31 28 31 30 31 30 31 31 30 31 30 31共365天。
润年366天,二月多一天,29天。
【润年判断】如果年份数能被4整除但不能被100整除或者能被400整除者,为润年。
【400年刚好一个轮回】很容易想到每400年内的润年数相等,即刚好一个轮回,400年有多少个润年?被4整除的有100个,被100整除的有4个,被400整除的只有1个,所以一共有100-4+1=97个润年,所以400年共有(365*400+97)天,即146097天,除7余0!也就是说2001年1月1日的星期数与1年1月1日的星期数相同,翻出日历一看,星期一,我不知道上帝什么时候造的人,或许是1年1月1日。
这样一来,任何一个日期我们都可以把它折算到0~399年之内的日期来算,0年的说法不准确,或许没有,但不影响这个数学结论,我们只是借它来推一推而已。
【起初的400年】如果每一年都是平年,即365天,除7余1,也就是说如果不遇上润年,每往下一年就会使星期数增一。
同样的道理,如果遇上润年,则多增一。
我们要算的也就是把润年数算出来就行了,很容易,如果是y年(0<=y<400),则遇到的润年数为[y/4]-[y/100]+1,为什么要+1,因为0年也是润年(被400整除),然后把y自己身加起来就得到年指数:(y+[y/4]-[y/100])%7,它影响着星期的轮转。
(其中[]表示取整,%表示取余,%7表示除以7得到的余数)【月份的变迁】月份的天数也不一定,所以不好直接用数学公式来表示,所以列一个表,表中对应数为星期的月指数。
前面有数据:(假设为平年)月份一二三四五六七八九十十一十二天数31 28 31 30 31 30 31 31 30 31 30 31每月对应前面过去的天数:月份一二三……天数0 31 31+28 ……对天数对7除取余得:月份一二三四五六七八九十十一十二天数0 3 3 6 1 4 6 2 5 0 3 5用一个数组保存下来:R[13]={0,0,3,3,6,1,4,6,2,5,0,3,5};设月为m,则月份的影响指数为R[m],它影响着星期的轮转。
100个经典C语言题目
行距大于列距,不进行调节显示出来的将是椭圆*/
for(x=1;x<30-m;x++) printf(" ");
/*图形左侧空白控制*/
printf("*");
/*圆的左侧*/
for(;x<30+m;x++) printf(" ");
/*图形的空心部分控制*/
printf("*\\n");
/*圆的右侧*/
-- 作者:huang01 -- 发布时间:2004-10-21 17:00:24
--
7. 8.借书方案知多少
小明有五本新书,要借给A,B,C 三位小朋友,若每人每次只能借一本,则可以有多少种不同的借法?
*问题分析与算法设计
本问题实际上是一个排列问题,即求从5 个中取3 个进行排列的方法的总数。首先对五本书从1 至5 进行编号,然后使用穷举的
5.求最大数
问555555 的约数中最大的三位数是多少? *问题分析与算法设计
根据约数的定义,对于一个整数N,除去1 和它自身外,凡能整除N 的数即为N 的约数。因此,最简单的方法是用2 到N-1 之间 的所有数去除N,即可求出N 的全部约数。本题只要求取约数中最大的三位数,则其取值范围可限制在100 到999 之间。 *程序说明与注释 #include<stdio.h> void main() {
{
printf("Input number %d=",i);
scanf("%d",&integer);
/*输入评委的评分*/
sum+=integer;
公元1年1月1日相关的几个话题
元年1月1日是星期几、干支为何,其公式是?这天到底发生了什么?公历元年1月1日是星期几的问题,网上的回答莫衷一是,有说周一、周五、周六的等等,以回答周一的居多,就是少有人回答是周日,更没有人给出有说服力的证明。
干支为何,几乎没人问。
为转嫁对夏日酷热的注意,闲人就说道一下相关的问题,以更新我那老不更新的QQ空间。
要准确回答这个问题,必须弄清公历(也称格里高利历或儒略历)于元年(不存在公元0年,元年即1年)之后的修改和纠错情况:1、儒略历从公元前45年1月1日(罗马纪元709年11月1日)施行。
1582年10月15日以前的置闰方法是每四年置一闰,即每400年置100闰。
年长和现在一样,平年2月28天,全年365天;闰年2月为29天,全年366天。
大概在前9年以后,为拍奥古斯都大帝的马屁,罗马元老院调整了各月的天数,使之成为现在这个样子。
此后儒略历的月序和各月的天数都没再作变更,沿用至今。
1582年10月15日之后,每400年97闰,即:能被4整除的年份和能被400整除的年份均置闰,但能被100整除不能被400整除年份不置闰。
如,1700、1800、1900年为平年,2000年为闰年。
2、公元4年没有置闰,该年2月仍然为28天。
前45年--前9年之间,罗马掌管历法的大祭司把恺撒大帝改历令上的“每隔三年置一闰”错解成“每三年置一闰”。
为纠正此错,前9年,奥古斯都大帝下令从前8年至4年停止置闰,即前5年、前1年和4年仍是平年,以后又恢复为每四年一闰(前41年应为第1个闰年,因为前45年1月1日到前42年12月31日满四年整,故应在前41年2月置闰,实际上前42年被置为闰年。
前9年既是实际的闰年,也应为四年一闰的闰年。
前45年~前9年期间共36年,本应置9闰,实际闰了12次)。
3、儒略历年长为365.25天,而回归年更接近365.2422天,因此约128年就误差1天。
比如,325年的春分在3月21日,而1583年的春分却是3月11日,整整相差了10天。
年月日推算
星期制度是一种有古老传统的制度。
据说因为《圣经·创世纪》中规定上帝用了六天时间创世纪,第七天休息,所以人们也就以七天为一个周期来安排自己的工作和生活,而星期日是休息日。
从实际的角度来讲,以七天为一个周期,长短也比较合适。
所以尽管中国的传统工作周期是十天(比如王勃《滕王阁序》中说的“十旬休暇”,即是指官员的工作每十日为一个周期,第十日休假),但后来也采取了西方的星期制度。
在日常生活中,我们常常遇到要知道某一天是星期几的问题。
有时候,我们还想知道历史上某一天是星期几。
通常,解决这个方法的有效办法是看日历,但是我们总不会随时随身带着日历,更不可能随时随身带着几千年的万年历。
假如是想在计算机编程中计算某一天是星期几,预先把一本万年历存进去就更不现实了。
这时候是不是有办法通过什么公式,从年月日推出这一天是星期几呢?答案是肯定的。
其实我们也常常在这样做。
我们先举一个简单的例子。
比如,知道了2004年5月1日是星期六,那么2004年5月31日“世界无烟日”是星期几就不难推算出来。
我们可以掰着指头从1日数到31日,同时数星期,最后可以数出5月31日是星期一。
其实运用数学计算,可以不用掰指头。
我们知道星期是七天一轮回的,所以5月1日是星期六,七天之后的5月8日也是星期六。
在日期上,8-1=7,正是7的倍数。
同样,5月15日、5月22日和5月29日也是星期六,它们的日期和5月1日的差值分别是14、21和28,也都是7的倍数。
那么5月31日呢?31-1=30,虽然不是7的倍数,但是31除以7,余数为2,这就是说,5月31日的星期,是在5月1日的星期之后两天。
星期六之后两天正是星期一。
这个简单的计算告诉我们计算星期的一个基本思路:首先,先要知道在想算的日子之前的一个确定的日子是星期几,拿这一天做为推算的标准,也就是相当于一个计算的“原点”。
其次,知道想算的日子和这个确定的日子之间相差多少天,用7除这个日期的差值,余数就表示想算的日子的星期在确定的日子的星期之后多少天。
天干地支的推算方法
推算日干支口诀推算日干支传统的计算方法,可以按公历和农历两种方法推算。
一、农历日干支推算口诀:大小月卦记心间,正一干支起根源。
大后干同地支冲,小后干支退一天。
初一十三二十五,支同隔干一位算。
推算方法:“大小月卦记心间,正一干支起根源。
”农历的大月为30天小月为29天,固定不变。
要推农历日干支,先要按《农历大小月卦口诀》将推算之年编上两卦,以便在推算日千支时运。
除此之外,还要记住农历正月初一日的干支,因为它是推算一年逐日的基础。
“大后干同地支冲,小后干支退一天。
”农历天干与地支组合,天干循环2.5次。
根据这一规律,知道某月初一日干支,如果这个月是小月则应在干同支冲的情况下,干支各减一位,则是小月后下月初一日干支。
如本月初一干支为己卯,这个月是大月,下月初一干支为己酉。
如果这个月是小月,则下月初一干支应在己酉退一位后确定,即为戊申日。
“初一十三二十五,支同干隔一位算。
”此两句是在确定某月初一干支后,将这个月分成三个阶段,即初一至十二,十三至二十四二十五以后。
初一、十三、二十五日在干支上也是有规律的。
知道初一干支,只要将该日天干隔一位顺推,而地支不变。
同理,知道十三日干支,支同干隔一位,也知道二十五日的干支。
如初一日干支为甲子,则十三日干支为丙子,二十五日干支为戊子。
掌握这个方法,就可以根据所推之日属于哪一段,便可以很快知道这天的干支了。
二、公历日干支推算口诀:元旦干支为根源,大小二月记心间。
小月干同地支冲,大月上句加一天。
申子辰年年为闰,干同支冲退一天。
余年二月二十八,干同支冲退一天。
月首十三二十五,支同隔干一位算。
推算方法:“元旦干支为根源,大小二月记心间。
”推算公历日干支,首先要记住元旦日的干支。
同时,还要知道大小月及二月的天数。
公历大月为31天,小月为30天,其大小月是固定不变的,唯独二月有29天和28天之分。
因此,要特别注意哪年二月为29天,那年二月为28天。
“小月干同地支冲,大月上句加一天。
三年级数学下册复习知识点归纳
三年级数学下册复习知识点归纳三年级数学下册复习知识点归纳数学是研究数量、结构、变化、空间以及信息等概念的一门学科。
以下是店铺精心整理的苏教版小学四年级数学上册知识点,仅供参考,欢迎大家阅读。
三年级数学下册复习知识点归纳1第一单元除法[本单元知识点]:1、整百数除以一位数;2、商中间有0的除法;3、商末尾有0的除法;4、简单应用。
1[记忆]三位数除以一位数,商可能是两位数,也可能是三位数。
(百位够除时商是三位数,百位不够除时是两位数。
)2[记忆]商中间有0的除法。
(十位不够除时要商0)3[记忆]0乘任何数都等于0。
0除以任何不为0的数都等于0。
4[连除应用题]。
5[半价出售](原来的价格2=现在的价格)6、记忆数量关系式:鸡的总只数层数=每层的只数、书的总本数书架的个数=每个书架上书的本数电池的总个数每盒电池的个数=盒数、速度时间=路程、路程时间=速度、路程速度=时间跳绳的总个数几分钟=每分钟跳的个数、工作总量工作时间=工作效率打字的个数时间=每分钟打字的个数第二单元年月日[本单元知识点]:1、认识大月、小月、平年、闰年;2计算经过的天数;3、生日快乐1[记忆]年分为平年、闰年;月分为大月、小月和特殊的2月。
平年有365天,闰年有366天。
(大月有:1月、3月、5月、7月、8月、10月、12月(7个);小月有:4月、6月、9月、11月)(4个)平年的2月有28天,闰年的2月有29天。
2连续的大月有7月和8月,或者12月和1月。
连续两个月天数是61天,其中一个是大月,一个小月。
平年第1季度第2季度第3季度第4季度天数90919292半年上半年181天下半年184天4、平年第1季度第2季度第3季度第4季度天数91919292半年上半年182天下半年184天5、各类节日:元旦节1月1日、植树节3月12日、国际劳动节5月1日、国际儿童节6月1日、建军节8月1日、建党节7月1日、国庆节10月1日、教师节9月10日等。
干支纪日法
干支纪日法使用干支记录日序的方法。
干支是天干、地支的合称,它与干支纪年法一样,用干支相匹配的六十甲子来记录日序,从甲子开始到癸亥结束,六十天为一周,循环记录。
干支纪日从商朝便已开始,但其顺序到现在有无间断或错乱过,尚待考证。
目前已确切知道的从春秋鲁隐公三年(公元前720年)二月己巳日起到清宣统三年(公元1911年)止(1912年民国元年采用公元纪年后,民间仍沿用)2600多年中从未间断和错乱过。
干支纪日法是商朝历法的最大成就,这是现今已知世界最长的纪日法,对于我国历史学,尤其是科学技术发展史的考证和研究,都是极为重要的记时标志,是我国一份珍贵的科学文化遗产。
如《肴之战》:“夏四月辛巳,败秦军于肴。
’“四月辛巳”指农历四月十三日;《石钟山记》“元丰七年六月丁丑”,即农历六月九日;《登泰山记》“是月丁未”,指这个月的二十八日。
古人还单用天干或地支来表示特定的日子。
如《礼记?檀弓》“子卯不乐”,“子卯”,代指恶日或忌日。
公元541年6月癸丑日是哪一天,最最重要的是,该如何计算出来?首先查的公元541年是梁武帝萧衍的大同七年,这一步在大多数字典上都能查到,网上也很容易。
其次,下载陈垣先生的《二十史朔闰表》一书,在正文第76页查得,该年六月份是辛丑朔,也就是初一,同时在旁边小字查的农历541年六月初一是西历的7月9号。
再按照干支表,初一是辛丑,按照辛丑、壬寅、癸卯、甲辰、乙巳、丙午、丁未、戊申、己酉、庚戌、辛亥、壬子、癸丑。
癸丑是十三,那么那天就是也就是农历541年六月十三,也是公历541年7月21日。
以上的困难主要在查《二十史朔闰表》表上,该表框内横排第一行是年份,以年号为准。
竖排最右一行是月份。
交汇之处就是该月的初一朔日所对应的干支,干支左侧有竖排小字,代表初一那天的公历日子。
找到初一之后,再数准欲查之日和初一的天数,很容易算得了。
这本书在verycd上有。
速查干支纪日法 :从已知日期计算干支纪日的公式为:G = 4C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d - 3Z = 8C + [C / 4] + 5y + [y / 4] + [3 * (M + 1) / 5] + d + 7 + i其中 C 是世纪数减一,y 是年份后两位,M 是月份,d 是日数。
中国日历(公历+农历)算法
中国公历算法中国公历算法不是太难,关键是星期值的确定。
这里给出了简单算法:public static int dayOfWeek(int y, int m, int d) {int w = 1; // 公历一年一月一日是星期一,所以起始值为星期日y = (y-1)%400 + 1; // 公历星期值分部 400 年循环一次int ly = (y-1)/4; // 闰年次数ly = ly - (y-1)/100;ly = ly + (y-1)/400;int ry = y - 1 - ly; // 常年次数w = w + ry; // 常年星期值增一w = w + 2*ly; // 闰年星期值增二w = w + dayOfYear(y,m,d);w = (w-1)%7 + 1;return w;}中国农历算法根公历相比,中国农历的算法相当复杂。
我在网上找的算法之中, 的算法是最好的一个。
这个算法使用了大量的数据来确定农历月份和节气的分部,它仅实用于公历 1901 年到 2100 年之间的 200 年。
中国农历计算程式跟据 提供的算法,我写了下面这个程式:[HTML]/*** ChineseCalendarGB.java* Copyright (c) 1997-2002 by Dr. Herong Yang./* 中国农历算法 - 实用于公历 1901 年至 2100 年之间的 200 年*/import java.text.*;import java.util.*;class ChineseCalendarGB {private int gregorianYear;private int gregorianMonth;private int gregorianDate;private boolean isGregorianLeap;private int dayOfYear;private int dayOfWeek; // 周日一星期的第一天private int chineseYear;private int chineseMonth; // 负数表示闰月private int chineseDate;private int sectionalTerm;private int principleTerm;private static char[] daysInGregorianMonth ={31,28,31,30,31,30,31,31,30,31,30,31};private static String[] stemNames ={"甲","乙","丙","丁","戊","己","庚","辛","壬","癸"};private static String[] branchNames ={"子","丑","寅","卯","辰","巳","午","未","申","酉","戌","亥"};private static String[] animalNames ={"鼠","牛","虎","兔","龙","蛇","马","羊","猴","鸡","狗","猪"};public static void main(String[] arg) {ChineseCalendarGB c = new ChineseCalendarGB();String cmd = "day";int y = 1901;int m = 1;int d = 1;if (arg.length>0) cmd = arg[0];if (arg.length>1) y = Integer.parseInt(arg[1]);if (arg.length>2) m = Integer.parseInt(arg);if (arg.length>3) d = Integer.parseInt(arg);c.setGregorian(y,m,d);puteChineseFields();puteSolarTerms();if (cmd.equalsIgnoreCase("year")) {String[] t = c.getYearTable();for (int i=0; i< FONT>} else if (cmd.equalsIgnoreCase("month")) {String[] t = c.getMonthTable();for (int i=0; i< FONT>} else {System.out.println(c.toString());}}public ChineseCalendarGB() {setGregorian(1901,1,1);}public void setGregorian(int y, int m, int d) {gregorianYear = y;gregorianMonth = m;gregorianDate = d;isGregorianLeap = isGregorianLeapYear(y);dayOfYear = dayOfYear(y,m,d);dayOfWeek = dayOfWeek(y,m,d);chineseYear = 0;chineseMonth = 0;chineseDate = 0;sectionalTerm = 0;principleTerm = 0;}public static boolean isGregorianLeapYear(int year) { boolean isLeap = false;if (year%4==0) isLeap = true;if (year%100==0) isLeap = false;if (year%400==0) isLeap = true;return isLeap;}public static int daysInGregorianMonth(int y, int m) {int d = daysInGregorianMonth[m-1];if (m==2 && isGregorianLeapYear(y)) d++; // 公历闰年二月多一天return d;}public static int dayOfYear(int y, int m, int d) {int c = 0;for (int i=1; i<>c = c + daysInGregorianMonth(y,i);}c = c + d;return c;}public static int dayOfWeek(int y, int m, int d) {int w = 1; // 公历一年一月一日是星期一,所以起始值为星期日y = (y-1)%400 + 1; // 公历星期值分部 400 年循环一次int ly = (y-1)/4; // 闰年次数ly = ly - (y-1)/100;ly = ly + (y-1)/400;int ry = y - 1 - ly; // 常年次数w = w + ry; // 常年星期值增一w = w + 2*ly; // 闰年星期值增二w = w + dayOfYear(y,m,d);w = (w-1)%7 + 1;return w;}private static char[] chineseMonths = {// 农历月份大小压缩表,两个字节表示一年。
年月日干支快速推算口诀
年月日干支快速推算口诀年月日干支快速推算口诀一、推算年干支1.公式法:把天干、地支以阿拉伯数字的形式编上序号,如:1 2 3 4 5 6 7 8 9 10 11 12 甲乙丙丁戊已庚辛壬癸子丑寅卯辰巳午未申酉戌亥然后再把由公式(年份—3)÷60=商……余数的计算结果套入下列公式即可。
干序=天干的个位数(为0时是癸)支序=余数—12n(n为0、1、2、3、4)地支的个位数(大于12时用)例如:求2005年的年干支?套入公式(1)得:(2005-3)÷60=33 (22)在代入本公式得:干序=22的个位数,为2。
2的天干序数为乙。
支序=22—12=10 10的地支序数为酉。
合之为乙酉,所以2005年的年干支为乙酉年。
2.查表法:序号 1 2 3 4 5年干支甲乙丙丁戊己庚辛壬癸首月干支丙戊庚壬甲子时干支甲丙戊庚壬例如:求阴历2005年2月的月干支?由年干支计算法得出,2005年的年干支为乙酉。
由上表可以看出,年干支的天干“乙”在上计算法中的第二位的“乙庚”处,其下所对应的天干为“戊”,此为一月的天干,如前所言,农历一月的地支在十二地支中定格为“寅”,合之为“戊寅”。
所以2005年2月的月干支为戊寅,为戊寅月。
由此类推,二月天干进一步为“己”,地支进一步为“卯”合之为“己卯”为己卯月。
(余略)又如己日,己与甲同一类型,以甲干为主,甲的序数为“1”以本身配子时,该日子时的天干为甲,即甲子时。
同样,癸日子时吧的天干,因戊癸合干,以五为主,序数为5,从5开始数到壬,癸日子时为壬子时。
余略)二、推算日干支日干支计算法不同于年干支、月干支,它是以阳历历法为基准,因为阳历历法除四年闰二月多出一天之外,其余每年的大小月都是固定不变的,不似阴历历法,其大小月没有规律性可循。
阳历大小月各月天数见下:大月:1 3 5 7 8 10 12 每月31天小月:4 6 9 11 每月30天二月:平年28天闰年29天日干支的计算公式为:求日干={元旦天干基数+日数+(或-)月数加减数}÷10=商……余数(若闰年,从三月起余数均加一)求日支={元旦地支基数+日数+(或-)月数加减数}÷12=商……余数若闰年,从三月起余数均加一)何为元旦干支基数?所谓的元旦干支基数,说白了就是阳历历法元旦这一天的日干支的天干、地支的序数。
根据年月日推算是星期几的公式
根据年月日推算是星期几的公式有时候,想知道公元某年某月某日是星期几,可以用下面的公式算出来:这里的方括号表示只取商的整数部分。
式中:x :这一年是公元多少年。
y :这一天是这一年的第几天。
s :星期几。
不过要先除以7,再取余数。
没有余数是星期日,余数是1、2、3、4、5、6,分别是星期一、星期二、星期三、星期四、星期五、星期六。
比如,2010年国庆节(10月1日)是星期几?x =2010。
y =31+28+31+30+31+30+31+31+30+1=31×5+30×3+28+1=274。
s =2010-1+502-20+5+274=2770,2770÷7余5。
所以,2010年国庆节是星期五。
如果,你只想知道这个公式怎样用,到这儿就可以了。
而要想知道这个公式的道理是什么,那可就说来话长了。
“星期制”是公元321年3月7日,古罗马皇帝君士坦丁宣布开始实行的,并且规定这一天为星期一。
实际上,就是把公元元年元旦(公元1年1月1日)规定为星期一。
(相当于公式中的x =1,y =1,所以s =1。
)通常1年有365天,365÷7=52……1,就是说比52个星期多1天。
所以,同一个日期,下一年是星期几,就要比上一年向后推1天。
比如,上一年元旦是星期三,下一年元旦就是星期四。
“通常每过1年,把同一日期是星期几向后推1天”,是理解这个公式的关键。
要想知道某年某月某日是星期几,首先,要知道这一年元旦以公元元年元旦是星期一为起点,已经把星期几向后推了多少天,还要知道这一天是这一年的第几天。
而要知道这一年元旦已经把星期几向后推了多少天,可以从公元元年到这一年已经过了多少年算起,先按1年向后推1天计算,再根据闰年的规定进行调整。
闰年的规定是:年份是4的倍数的一般都是闰年,其中,年份是整百数的y x x x x s +⎥⎦⎤⎢⎣⎡-+⎥⎦⎤⎢⎣⎡--⎥⎦⎤⎢⎣⎡-+-=40011001411一般不是闰年,只有年份是400的倍数的才是闰年。
年月日干支快速推算口诀
年月日干支快速推算口诀一、推算年干支1.公式法:然后再把由公式(年份—3)÷60=商……余数的计算结果套入下列公式即可。
干序=天干的个位数(为0时是癸)支序=余数—12n(n为0、1、2、3、4)地支的个位数(大于12时用)例如:求2005年的年干支?套入公式(1)得:(2005-3)÷60=33 (22)在代入本公式得:干序=22的个位数,为2。
2的天干序数为乙。
支序=22—12=10 10的地支序数为酉。
合之为乙酉,所以2005年的年干支为乙酉年。
2.查表法:例如:求阴历2005年2月的月干支?由年干支计算法得出,2005年的年干支为乙酉。
由上表可以看出,年干支的天干“乙”在上计算法中的第二位的“乙庚”处,其下所对应的天干为“戊”,此为一月的天干,如前所言,农历一月的地支在十二地支中定格为“寅”,合之为“戊寅”。
所以2005年2月的月干支为戊寅,为戊寅月。
由此类推,二月天干进一步为“己”,地支进一步为“卯”合之为“己卯”为己卯月。
(余略)又如己日,己与甲同一类型,以甲干为主,甲的序数为“1”以本身配子时,该日子时的天干为甲,即甲子时。
同样,癸日子时吧的天干,因戊癸合干,以五为主,序数为5,从5开始数到壬,癸日子时为壬子时。
余略)二、推算日干支日干支计算法不同于年干支、月干支,它是以阳历历法为基准,因为阳历历法除四年闰二月多出一天之外,其余每年的大小月都是固定不变的,不似阴历历法,其大小月没有规律性可循。
阳历大小月各月天数见下:大月:1 3 5 7 8 10 12 每月31天小月:4 6 9 11 每月30天二月:平年28天闰年29天日干支的计算公式为:求日干={元旦天干基数+日数+(或-)月数加减数}÷10=商……余数(若闰年,从三月起余数均加一)求日支={元旦地支基数+日数+(或-)月数加减数}÷12=商……余数若闰年,从三月起余数均加一)何为元旦干支基数?所谓的元旦干支基数,说白了就是阳历历法元旦这一天的日干支的天干、地支的序数。
【三年级】巧算周期问题
【三年级】巧算周期问题
假设一年有365天,其中有52个完整的星期和1天,这称为一个标准年。
每四年我们会多加一天,这称为闰年。
这个额外的一天通常在2月29日出现。
因此,闰年有366天。
周是围绕一周七天的循环而建立的。
星期日是每周的第1天,星期六是每周的第7天。
因此,在一年中有52周,其中有364天。
但是,当一个闰年到来时,我们会多一个完整的星期,从而使一年变成53周,其中有365天。
让我们来看看下面的周期问题:
【问题一】如果2月1日是星期二,那么2月8日是星期几?
解:由于2月有28天或29天(闰年),而且我们现在知道在2月1日是星期二,因
此2月8日是星期二之后的第7天,所以2月8日是星期二的下一个星期二,也就是星期
二再过六天,即星期一。
解:由于一个星期有七天,因此在1月1日之后的14天内,我们将到达下一个星期三,这意味着1月15日是星期三。
解:首先,我们需要计算出2019年有多少天。
由于每年有365天,在2019年中,我
们不需要进行闰年修正,因此总共有365天。
现在,我们需要计算出在2019年中的第365天是星期几,因为2019年12月31日是星期二,所以2019年的第365天是星期三。
然后,我们回到2019年12月25日,这是在2019年内的第359天。
因为星期有七天,因此359
除以7余数为3,意味着2019年12月25日是星期三的下一个星期三,也就是星期三再过七天,即星期二。
计算一个日期到1年一月一日的总天数
}
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
if(g(a)==1)
m[1]=29;
if(c<1||c>m[b-1])
{
cout<<"the day is wrong!"<<endl;
return 0;
}
else
return 1;
}
//g函数用来判断闰年
int g(int a)
{
int b;
if(a%100==0)
{
b=a%400;
if(b==0)
return 1;
else
return 0;
}
else
{
b=a%4;
if(b==0)
return 1;
else
return 0;
}
}
//h函数用来判断共有多少天
int h(int a,int b,int c)
#include<iostream.h>
void main()
{
int h(int a,int b,int c);
int f(int a,int b,int c);
int g(int a);
int year,month,day,xq,a,sum;
do
{
cout<<"请输入年月日:"<<endl;
cin>>year>>month>>day;
{
int m[12]={31,28,31,30,31,30,31,31,30,31,30,31};
给出年月日计算星期几
= 122,
这正是5月1日在2004年的累积天数。
假如,我们再变通一下,把1月和2月当成是上一年的“13月”和“14月”,不仅仍然符合这个公式,而且因为这样一来,闰日成了上一“年”(一共有14个月)的最后一天,成了d的一部分,于是平闰年的影响也去掉了,公式就简化成:
= 2002 + 500 - 20 + 5 + 36 + 1
= 2524;
2524 / 7 = 360……4.这和实际是一致的。
公式(5)已经是从年、月、日来算星期几的公式了,但它还不是最简练的,对于年份的处理还有改进的方法。我们先来用这个公式算出每个世纪第一年3月1日的星期,列表如下:
年份: 1(401,801,…,2001) 101(501,901,…,2101)
显然,W这么大的原因是因为公式中的第一项(Y-1)*365太大了。其实,
(Y-1)*365 = (Y-1) * (364+1)
= (Y-1) * (7*52+1)
= 52 * (Y-1) * 7 + (Y-1),
这个结果的第一项是一个7的倍数,除以7余数为0,因此(Y-1)*365除以7的余数其实就等于Y-1除以7的余数。这个关系可以表示为:
【转】给出年月日,计算星期几--算法及算法来历最常见的公式:
W = [Y-1] + [(Y-1)/4] - [(Y-1)/100] + [(Y-1)/400] + D
Y是年份数,D是这一天在这一年中的累积天数,也就是这一天在这一年中是第几天。
日期类
根据输入生日判断已经活了多少天
case 5:cout<<"输入您的出生日期(阳历):"<<endl; data1.getdata(); //输入日期 data1.printDate(); //输出日期 data1.nowtotalday(); //获得计算机当前时间,并且计算出与1年1月1日的差 data1.gettotalday(); //获得出生日期与1年1月1日的差 // 1 1 1 cout<<"您从出生到现在经历了 <<data1.nowtotalday()-data1.gettotalday()<<"天, ^_^^_^"<<endl; //获得从出生到现在活了多久 break;
class DataType { private: int y,m,d; //数据成员,表示当前日期的年、月、日 int totalday; //表示该日期与1年1月1日的差 public: void incrementday(); int gettotalday(); void whichday(); void getdata(); void printDate(); void constellation(); int nowtotalday(); }data1,data2;
对一个日期一次增加几天,获得增加后日期 case 3:cout<<"输入您要增加的日期:"<<endl; data1.getdata(); //输入日期 data1.printDate(); //输出日期 data1.incrementday();//计算增加几天后的日期 break; 判断星座 case 4:cout<<"星座是按照公历日期判断的,输入您的阳 历生日:"<<endl; data1.getdata(); //输入日期 data1.constellation(); //判断星座 break;
万年历的计算公式
平年2月28天,闰年2月29天
每400年一闰,或非百年年份每4年一闰
地球绕太阳一周的时间为365天5小时48分46秒, 规定一年365天,余下的时间,积累起来,4年共23 小时15分4秒,将近一天,把这一天加在某年的2月 而成29天,该年称为闰年,其他年份为平年。但4年 加1天又多用了44分56秒,这个数积满400年为3天。 因此400年中只能有97个闰年
万年历的计算公式
日期计算公式 Zeller公式 某日是星期几?关于这个问题,有很多计算公式(两 个通用计算公式和一些分段计算公式),其中最著名 的是Zeller公式: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 w:星期;c:世纪-1;y:年份(两位数);m:月份 (3≤m≤14,即在Zeller中,某年的1、2月要看作上一年 的13、14月,比如2003年1月1日要看作2002年的13月 1日);d:日数。 算出来的W除以7,余数是几就是星期几
万年历的计算公式
日期的计算 例子 确定2049年10月1日(100周年国庆)为星期几,用Zeller 公式进行计算,过程如下: w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1 =49+[49/4]+[20/4]-2×20+[26×(10+1)/10]+1-1 =49+[12.25]+5-40+[28.6] =49+12+5-40+28 =54 (除以7余5) Zeller公式只适合1582年10月15日后的情形
小升初:周期问题
总结:
• 解答周期问题的关键是找规律,找出周期。 然后用总量除以周期,如果为整数,结果就 是周期里最后一个,如果有余数,余几就对 应周期的第几个数。
274÷7=39......1 周期: 五,六,日,一,二,三,四
√ 余数是几,对应周期第几个。
82021表示2021个8相乘,积的个位数字是几?
思路分析:
8个位数字是 8, 8×8个位是4, 8×8×8个位是2, 8×8×8×8个位是6 8×8×8×8×8个位是8 8×8×8×8×8×8个位是4 8×8×8×8×8×8×8个位是2 8×8×8×8×8×8×8×8个位是6 2021÷4=505......1 所以个位数字是 8
小学小升初真题详解
主讲人:唐老师
周期性问题:
在学习数学的过程中,我们常常遇到一些重 复出现的,有规律的问题,我们称之为周期 性问题。 如:一年四季,一个星期7天,循环小数..... 思路导航: 周期性问题的关建是发现规律,找到最基本 的循环节,重复出现元素的个数是几,周期 就是几?
例题1:2021年1月1日是星期五, 202题是利用周期问题判断某天是星期几的问题, 我们可以思考和计算从1月1日到10月1日共经历 了多少天(包括首尾两天),2021是平年,1月 1日到10月1日经历了: 31+28+31+30+31+30+31+31+30+1=274 (天)
然后274÷7的余数即可。
例题1:2021年1月1日是星期五, 2021年10月1日是星期几?