C 语言做一个模块化的程序:已知年月日求星期几?
已知年月日求星期几,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。w = y [y/4] [c/4] - 2*c [26*(m 1)/10] d - 1 其中,w:星期(对7求余数,余数0是星期天,正数往前算,负数往后算,比如1师星期一,-1是星期六);c:世纪 -1;y:年(两位数);m:月(m大于等于3,小于等于14,某年的1、2月要看作上一年的13、14月来计算,比如2011年1月1日要看作2010年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。 (C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来...全部
已知年月日求星期几,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。w = y [y/4] [c/4] - 2*c [26*(m 1)/10] d - 1 其中,w:星期(对7求余数,余数0是星期天,正数往前算,负数往后算,比如1师星期一,-1是星期六);c:世纪 -1;y:年(两位数);m:月(m大于等于3,小于等于14,某年的1、2月要看作上一年的13、14月来计算,比如2011年1月1日要看作2010年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。
(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。) 不过这个公式只适用于1582年10月15日之后的日期,因为之前使用的日历跟先行的公历不同。
// 输入年月日(1582年10月15日之后的正常日期,年份四位),输出星期(0~6,0表示星期天)int date_to_week(int y, int m, int d) { // 输入正常日期的年月日(年份四位数) if (month算出来的W除以7,余数是几就是星期几。
如果余数是0,则为星期日。收起