编辑: 学冬欧巴么么哒 2013-06-09

1700年,2100年是一样的;

1800年,2200年是一样的;

1900年,2300年是一样的. 其中万年某日星期算法 其公式为: 某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7 通同星期偏差表 闰年 1月 2月 3月 4月 5月 6月 7月 8月 9月10月11月12月 天数

31 29

31 30

31 30

31 31

30 31

30 31 星期

3 6

0 3

5 1

3 6

2 4

0 2 平年 1月 2月 3月 4月 5月 6月 7月 8月 9月10月11月12月 天数

31 28

31 30

31 30

31 31

30 31

30 31 星期

4 0

0 3

5 1

3 6

2 4

0 2 为对以上的万年历星期的算法是正确的对其进行了以下的计算: ⒈对于二十世纪任意日期可以用公式某日星期几=(百年%4*5天+年+年/4+平年月星期表+日+2天)%7=(19%4*5天+年+年/4+平年月星期表+日+2天)%7=(15天+年+年/4+平年月星期表+日+2天)%7以下就是根据上面对其进行的计算: 1900年元旦 1日=(0/4*5+0%4+1+3)%7=(0+0+4)%7=4 1月表=4(平年) 故4+4=1 即1900年元旦是星期一 1949年国庆 1日=(49/4*5+49%4+1+3)%7=(60+1+4)%7=2 10月表=4(平年) 故4+2=6 即1949年国庆是星期六 1999年12月31日31日=(99/4*5+99%4+31+3)%7=(120+3+34)%7=3 12月表=2(平年) 故2+3=5 即1999年12月31日是星期五 ⒉对于二十一世纪新前年虫算法(20%4*5=0)可以用公式:某日星期几=(百年%4*5天+年+年/4+闰年月星期表+日+2天)%7 =(20%4*5天+年+年/4+闰年月星期表+日+2天)%7以下就是根据上面对其进行的计算: 2000年元旦 1日=(0+0/4+1+2)%7=(0+0+1+2)%7=3 1月表=3(闰年) 故3+3->6 即2027年元旦是星期六 2018年春节 16日=(18+18/4+16+2)%7=(18+4+16+2)%7=5 2月表=0(平年) 故0+5=5 即2018年春节是星期五 2099年12月31日31日=(99/4*5+99%4+31+2)%7=(120+3+33)%7=2 12月表=2(平年) 故2+2=4 即2099年12月31日是星期四 对于上面的分析以及公式的推论和计算证明可以对万年历中的星期进行了编写具体编写程序见(五 、万年历程序)中. 五 、万年历源程序 #include"stdio.h" #include"dos.h" #include"conio.h" #include"stdlib.h" #define Year(x) (x%4==0&&x%100!=0||x%400==0) ? 1:0 /*判断闰年*/ int numofMonth(int y,int m){ int day,t=28;

if(m==1||m==3||m==5||m==7||m==8||m==10||m==12) day=31;

/*定义以上月份为31天*/ else if(m==4||m==6||m==9||m==11) day=30;

/*定义以上月份为30天*/ else{t+=Year(y);

day=t;

} /*闰年二月29天,平年28天*/ return day;

} int numofYear(int y){ int t=365;

/*平年365天*/ t+=Year(y);

/*闰年366天*/ return t;

} int numofbeforeDays(int y,int m,int d){ int sum=d,i;

for(i=1;

i

下载(注:源文件不在本站服务器,都将跳转到源网站下载)
备用下载
发帖评论
相关话题
发布一个新话题