



免费预览已结束,剩余1页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
首先,我们指定一个数字代表一个星期数,这些数都是很容易记住的:数字 星期数 1 星期一2 星期二3 星期三4 星期四5 星期五6 星期六7或者0 星期日上面的这个列表是很容易记住的,因为这些数字与星期数几乎是一一对应的当然,星期日除外。不过,我们通常也有把星期日看作是星期七的做法。所以,记住这个列表是很容易的事情。接下来,我们还需要用数字代表一年当中的12个月。这些数字适用于任何年份,不过有两个例外。在诸如2000、2004或者2008年这样的闰年,1月份的代码是5,2月份的代码则是1。为了便于记忆月份的代码,我们提供了一个记忆的列表: 月份 数字代码 一月 6* 二月 2*三月 2四月 5五月 0六月 3七月 5八月 1九月 4十月 6十一月 2十二月 4(*代表在闰年,1月份的代码为5,而二月份的代码为1)记忆方法:一月和十月为6;二月、三月和十一月为2;四月、七月为5;五月为0;六月为3;八月为1;九月和十二月为4。现在,我们来计算一下2006年任何一天的星期数吧。此后,我们计算2007,然后是2008年等等,一直到接下来的年份。我们将不仅知道将来某一天是星期几,而且还会知道过去的某一天是星期几,甚至几个世纪以前的某一天是星期几。每个月、每个星期的每一天都有一个数字代码,而每一年也都有一个数字代码,而2006年的数字代码刚好为0(关于年份的数字代码,见下文)。知道了年份的数字代码后,要知道某一天的星期数,只需要把月份代码与日期代码和年份代码简单地相加就可以了。例如,要知道2006年12月3日的星期数,只需按照下面的步骤去做就可以了:月份代码+日期代码+年份代码=4+3+0=7因为7代表星期日,所以,2006年12月3日是星期日。那么,2006年11月18日呢?我们已经知道11月份的代码是2,所以:月份代码+日期代码+年份代码=2+18+0=20因为每周是七天,所以我们可以用这个结果减去7的任意倍数(7、14、21、28、35),而星期数却不会变。所以,下一步就是要减去比这个结果小、但却是最大的7的倍数,也就是除7取余,即:20%7=6,因此,2006年11月18日是星期六。那么,2007年任意一天的星期数呢?随着年份的变化,你的生日的星期数是不是也随之变化呢?大多数的年份一共有365天,而且由于364是7的倍数(752=364)。所以,在大多数的年份,你的生日的星期数会随之向前推移1天。如果你的两个生日之间有366天,那么你的生日的星期数会随之向前推移2天。至于2007年的任意一天的星期数,其计算方法同2006年一样,只不过它的年份代码由06年的0变成07年的1了。接下来的2008年是闰年(闰年每四年一次,所以21世纪的闰年还包括2000年、2004年、2008年2096年)。因此,2008年的年份代码要加上2,也就是3了。接下来的2009年不是闰年,因此,它的年份代码是4。例如,2007年5月2日的星期数是:月份代码+日期代码+年份代码=0+2+1=3所以,这一天是星期三。那么,2008年9月9日呢?这一天的星期数是:月份代码+日期代码+年份代码=4+9+3=1616%7=2,所以这一天是星期二。那么,2008年1月16日呢?对于这个日期,我们就要考虑2008年是闰年这一因素了,因为闰年1月份的代码是5,而不是常年的6.由于:月份代码+日期代码+年份代码=5+16+3=2424%7=3,即:星期三。作为参考,在下文中,已经列出了21世纪的所有年份的代码。21世纪年份代码参考:年份 代码2000 02001 12002 22003 32004 52005 62006 02007 12008 32009 42010 52011 62012 12013 22014 32015 42016 62017 02018 12019 22020 42021 52022 62023 02024 2年份 代码2025 32026 42027 52028 02029 12030 22031 32032 52033 62034 02035 12036 32037 42038 52039 62040 12041 22042 32043 42044 62045 02046 12047 22048 42049 5年份 代码2050 62051 02052 22053 32054 42055 52056 02057 12058 22059 32060 52061 62062 02063 12064 32065 42066 52067 62068 12069 22070 32071 42072 62073 02074 1年份 代码2075 22076 42077 52078 62079 02080 22081 32082 42083 52084 02085 12086 22087 32088 52089 62090 02091 12092 32093 42094 52095 62096 12097 22098 32099 4值得庆幸的是,我们没有必要记住这个表格的内容,因为我们可以心算出2000年至2099年任意年份的代码。要求出2000+X年份的代码,我们只需要用X除以4(忽略余数),然后再与X相加,除以7就可以了,所得到的余数就是该年份的代码。例如,要求出2061年的年份代码,我们只需要这样做就可以了:614=151,而15+61=76;由于767=106,即76%7=6,所以,2061年的年份代码为6。所以,2061年3月19日的星期数是:月份代码+日期代码+年份代码=2+19+6=27因为27%7=6,所以这一天是星期六。那么,20世纪的生日呢?其计算方法是完全一样的,其不同之处在于将最终的结果向前推移1天(或者只要将年份代码加1就可以了)。因此,1961年3月19日是星期日。那么1998年12月3日呢?因为98/4=24(余数忽略不计),所以1998年的年份代码为98+24+1=123(对于20世纪,求年份代码要加1,因为上述那个年份代码的计算方法只适用21世纪的年份),123%7=4,因此,1998年的年份代码为4。所以,1998年12月3日的星期数是:月份代码+日期代码+年份代码=4+3+4=11,而11%7=4,即:这一天是星期四。而计算19世纪任意一天的星期数时,其年份的代码要(在21世纪年份的基础上)加上3。例如,英国博物学家查尔斯达尔文和美国第十六任总统亚伯拉罕林肯都出生于1809年2月12日。因为2009年的年份代码为4,所以1809年的年份代码是4+3=7,也就是0。因此,达尔文和林肯出生的这一天是:月份代码+日期代码+年份代码=2+12+0=14而14%7=0,所以这一天是星期日。那么,在计算22世纪任意一天的星期数时,其年份的代码要(在21世纪的基础上)加上5或减去2(二者的结果都是一样的)。例如,因为2009年的年份代码是4,所以2109年的年份代码为4+5=9,而9-7=2,即2。18世纪的年份代码则同22世纪的年份代码完全一样。不过,有一点需要注意的是,因为我们这个运算是基于1582年确立的格林高利历法,而英国只是从1752年才开始采用这个历法的。在当时,9月2日是星期三,而9月14日则是星期四。我们还是来证实一下吧!由于2052年的年份代码是2,所以,1752年的年份代码是0。因此,1752年9月14日是:月份代码+日期代码+年份代码=4+14+0=18而18%7=4,所以这一天的确是星期四。不过,我们这个公式对于早期时代的日期是不起作用的,因为当时采用的是儒略历(现今国际通用的公历的前身)。最后,需要指出的,根据格林高利历法,闰年每四年一次,而能够被100整除的年份除外,但是能够被400整除的年份例外。也就是说,能够被400整除的年份同样是闰年。所以,1600年、2000年、2400年、2800年等都是闰年,而1700年、1800年、1900年、2100年、2200年、2300年和2500年等都不是闰年,尽管他们都能被4整除(但不能被400整除)。事实上,格林高利历法是每400年一个轮回,所以你可以将未来的任意一天转换成距离2000年最近的一天。例如,2361年3月19日和2761年3月19日的星期数同1961年3月19日的星期数是一样的,即:星期日。下面给出用C语言编写的一个小程序来判断任意年份的某一天的星期数:#include#includeint xingqipanduan(int N,int Y,int R)int nian10;int ab,cd,t;int niandaima;int yuedaima12=6,2,2,5,0,3,5,1,4,6,2,4;/*月代码*/if(N%4=0&N%100!=0)|N%400=0)/*如果是闰年,、月代码相应变化*/yuedaima0=5;yuedaima1=1;int a,i,n=0;a=N;i=0;while(a!=0)niani=a%10;a=a/10;i+;n+;cd=nian0+10*nian1;ab=0;for(i=2;in;i+)ab=int(ab+niani*pow(10,i-2);if(ab%4=0) /*计算相应的年代码*/niandaima=(cd/4+cd)%7;if(ab+1)%4=0)niandaima=(cd/4+cd+1)%7;if(ab+2)%4=0)niandaima=(cd/4+cd+3)%7;if(ab+3)%4=0)niandaima=(cd/4+cd+5)%7;t=niandaima+yuedaimaY-1+R;t=t-t/7*7; /*t即为所求的星期,若为零则为星期日*/return(t);void main()int nian,yue,ri;int xingqi;printf(输入年、月、日n);scanf(%d%d%d,&nian,&yue,&ri);xingqi=xingqipanduan(nian,yue,ri);switch(xingqi)case 0:printf(%d年%d月%d日是星期日n,nian,yue,ri);break;case 1:printf(%d年%d月%d日是星期一n,nian,yue,ri);break;case 2:printf(%d
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年河北石家庄井陉县中医院公开招聘工作人员19名考前自测高频考点模拟试题及答案详解(各地真题)
- 2025年度应急管理部所属单位第二批次公开招聘102人模拟试卷及答案详解一套
- 2025年甘肃人力委托招聘中石油酒泉加油站加油员考前自测高频考点模拟试题及一套完整答案详解
- 2025北京石油管理干部学院春季高校毕业生招聘5人模拟试卷及1套完整答案详解
- 2025年河北唐山滦州市森林草原消防专业队员招聘7人考前自测高频考点模拟试题(含答案详解)
- 安全培训教室宣传牌课件
- 2025年医学研究与试验发展服务项目建议书
- 2025江苏无锡科技职业学院招聘高层次人才23人(长期)模拟试卷及完整答案详解1套
- 2025湖南长沙艺术学校教师招聘68人模拟试卷及答案详解(夺冠系列)
- 安全培训教学规律
- 哲学与人生 第二课 树立科学的世界观2.1
- 2024-2030年中国止痛药品市场供需形势及未来前景动态研究研究报告
- 风电110KV升压站土建工程施工方案
- 2018低压电力线高速载波通信互联互通技术规范第3部分:检验方法
- CSC-326系列数字式变压器保护装置说明书(SF4524)-V1331
- 房屋漏水维修合同书范文
- 超声科医院感染管理:培训与演练
- 中药草乌课件
- DL-T 892-2021 电站汽轮机技术条件
- (正式版)JBT 14449-2024 起重机械焊接工艺评定
- 养牛计划书模板
评论
0/150
提交评论