男女做那个网站动态图片,商标大全 logo,做网站品牌,搬瓦工wordpress建站题目
输入#xff1a;一个合法的公历日期#xff0c;格式为“XXXXXXXX”#xff0c;分别代表年#xff08;4 位#xff09;、月#xff08;2 位#xff09;、日#xff08;2 位#xff09;。 输出#xff1a;当日对应星期几的英语缩写#xff08;3 个字母#xff…题目
输入一个合法的公历日期格式为“XXXXXXXX”分别代表年4 位、月2 位、日2 位。 输出当日对应星期几的英语缩写3 个字母首字母大写。
这里我学到了一个新知识点
基姆·拉尔森(Kim Larsen)公式 也被称为Zellers congruence(泽勒公式)是一种用于计算给定日期的星期几的算法
该公式基于每个月的排列规律以及年份的编码通过模运算和整除运算得到结果。具体来说它通过将日期的年份、月份和日期进行一系列数学运算并结合一些修正项最终计算出星期几的值。
此外还有一个有趣的公式也是用于计算某一天是星期几的公式如下week (d 2m 3(m 1)/5 y y/4 - y/100 y/400 1) % 7。其中y代表年m代表月d代表日。
至于原理 基姆·拉尔森(Zeller)公式的原理基于朔望月的周期性现象。 朔望月是指从一次新月到下一次新月的时间间隔通常为29.5天左右。根据这个周期我们可以计算出任何一个日期是在一个月的第几天从而推算出这一天是星期几。 具体来说Zeller公式的计算方法如下 将要计算的日期分别表示为年份(Y)、月份(M)和日(D)。如果这个月是1月或2月将年份减1月份加上12这样可以将这两个月看作上一年的13月和14月。计算出一个系数C公式为C Y / 100。计算出一个系数G公式为G 5 * C C / 4。计算出一个系数X公式为X (D 26 * (M 1) / 10 Y % 100 Y % 100 / 4 G) % 7。根据X的值来确定这一天是星期几其中0表示星期六1表示星期日2表示星期一以此类推。 代码
#include stdio.h
int getWeek(int day)
{/**********Begin**********/int yearday/10000;int mouth(day%10000)/100;int todayday%100;return (today2*mouth3*(mouth1)/5yearyear/4-year/100year/4001)%7;/**********End**********/
}const char* printWeek(int w)
{/**********Begin**********/const char*arr[]{ Sun,Mon, Tue, Wed, Thu, Fri, Sat};return arr[w];/**********End**********/
}
int main()
{int date;scanf(%d,date);int week getWeek(date);const char * strprintWeek(week);printf(%s,str);return 0;
}