计算某年的第一天是星期几的公式! -- 编程爱好者论坛存档帖
来源:百度文库 编辑:神马文学网 时间:2024/04/29 13:13:41
首先,利用你的公式编一简单程序:
main()
{ int year;/*年份*/
int w; /*星期几*/
scanf ("%d",&year);
w=((year-1)+ (year-1)/4-(year-1)/100+(year-1)/400+1)%7;
printf("%d\n",w);
getch();
}
运行时,输入1,得到结果1。即,如果这个公式正确,公元1年的第一天是星期一。这是一个计
算前提,必须先搞清楚。
然后要知道闰年的规定:凡是年份能够被4整除、且不能被100整除的是闰年;凡是年份能被400
整除的也是闰年;除此以外的年份都不是闰年。
第三要知道闰年366天、平年365天,不知道这个的得重新上小学。
有了这三个基础,就好办了。公元1年第一天(下文简称"起始天")之后,要计算某天是星期几
,只要用“这天与起始天之差”,与7求余,当余数为0,则这天与起始天星期几相同,也是星
期一;否则,这个余数+1就是这天的星期几。
假设这个程序时输入年份year,则该年的第一天距离起始天的差是:
(year-1)*365+(公元1年到公元year-1年内的闰年个数(每个闰年多一天啊!)) 。。。
。。。。(1)
公元1年到公元year-1年内的闰年个数的计算:
根据闰年规定,反过来考虑可以知道:
大致每4年有1个闰年,这样算得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4
但,每一百年要扣掉1个闰年,修正一下得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4-(year/100)
扣多了!每400年又要增加一个闰年,再次修正得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4-(year/100)+(year/400)
这次准确了。
代入(1)得到年份year第一天距离起始天的差是:
(year-1)*365+(year-1)/4-(year/100)+(year/400)
这天是星期几?前面说过,是这个差与7求余+1:
[(year-1)*365+(year-1)/4-(year/100)+(year/400)]%7+1
这个末尾的1可以放到被除数里面,即:
[(year-1)*365+(year-1)/4-(year/100)+(year/400)+1] %7
=[(year-1)*(364+1)+(year-1)/4-(year/100)+(year/400)+1] %7
=[(year-1)*364+(year-1)+(year-1)/4-(year/100)+(year/400)+1] %7
364是7的倍数,year*364也一定是7的倍数,所以year*364可以去掉,这就得到了
最后的计算式:
=[(year-1)+(year-1)/4-(year/100)+(year/400)+1] %7
这个[ ]内最后的1,可以看成是新年的第1天。更一般地,year年度的第D天是星期几?可以用下式计算:
[(year-1)+(year-1)/4-(year/100)+(year/400)+D] %7
main()
{ int year;/*年份*/
int w; /*星期几*/
scanf ("%d",&year);
w=((year-1)+ (year-1)/4-(year-1)/100+(year-1)/400+1)%7;
printf("%d\n",w);
getch();
}
运行时,输入1,得到结果1。即,如果这个公式正确,公元1年的第一天是星期一。这是一个计
算前提,必须先搞清楚。
然后要知道闰年的规定:凡是年份能够被4整除、且不能被100整除的是闰年;凡是年份能被400
整除的也是闰年;除此以外的年份都不是闰年。
第三要知道闰年366天、平年365天,不知道这个的得重新上小学。
有了这三个基础,就好办了。公元1年第一天(下文简称"起始天")之后,要计算某天是星期几
,只要用“这天与起始天之差”,与7求余,当余数为0,则这天与起始天星期几相同,也是星
期一;否则,这个余数+1就是这天的星期几。
假设这个程序时输入年份year,则该年的第一天距离起始天的差是:
(year-1)*365+(公元1年到公元year-1年内的闰年个数(每个闰年多一天啊!)) 。。。
。。。。(1)
公元1年到公元year-1年内的闰年个数的计算:
根据闰年规定,反过来考虑可以知道:
大致每4年有1个闰年,这样算得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4
但,每一百年要扣掉1个闰年,修正一下得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4-(year/100)
扣多了!每400年又要增加一个闰年,再次修正得到:
公元1年到公元year-1年内的闰年个数=(year-1)/4-(year/100)+(year/400)
这次准确了。
代入(1)得到年份year第一天距离起始天的差是:
(year-1)*365+(year-1)/4-(year/100)+(year/400)
这天是星期几?前面说过,是这个差与7求余+1:
[(year-1)*365+(year-1)/4-(year/100)+(year/400)]%7+1
这个末尾的1可以放到被除数里面,即:
[(year-1)*365+(year-1)/4-(year/100)+(year/400)+1] %7
=[(year-1)*(364+1)+(year-1)/4-(year/100)+(year/400)+1] %7
=[(year-1)*364+(year-1)+(year-1)/4-(year/100)+(year/400)+1] %7
364是7的倍数,year*364也一定是7的倍数,所以year*364可以去掉,这就得到了
最后的计算式:
=[(year-1)+(year-1)/4-(year/100)+(year/400)+1] %7
这个[ ]内最后的1,可以看成是新年的第1天。更一般地,year年度的第D天是星期几?可以用下式计算:
[(year-1)+(year-1)/4-(year/100)+(year/400)+D] %7
计算某年的第一天是星期几的公式! -- 编程爱好者论坛存档帖
计算星期几的公式
计算任何年月日是星期几的公式
求任何一天是星期几的公式
计算任何一天是星期几算法.
计算任何一天是星期几算法.
计算任何一天是星期几算法.
计算任何一天是星期几
计算任何一天是星期几--算法.
计算任何一天是星期几算法(99)
生活常识:计算任何一天是星期几算法.
求第一天是星期3的月份
某一天的下 (上) 一个星期几是那一天?
一个非常简洁的 程序 计算2000~2099年任一天是星期几【恢复】 (www.ourde...
蔡勒Zeller公式(计算星期的方法) - jx的日志 - 网易博客
第80节:2T-1L -空间突破计算公式 短线是银爱好者 - powered by dedecms
看看你是星期几出生的孩子
星期几出生的女生是你最佳恋人
星期几出生的男生是最佳恋人
星期几的速算方法
星期几的速算方法!
年月日星期几的计算方法!
星期几出生的孩子
是星期几