星期几问题
1 /* 2 * 已知1752年9月3日是Sunday,并且日期控制在1700年2月28日后 3 */ 4 char name[][15] = { "monday", "tuesday", "wednesday", "thursday", "friday", "saturday", "sunday"}; 5 6 int main() 7 { 8 int d, m, y, a; 9 printf("Day: "); 10 scanf("%d", &d); 11 printf("Month: "); 12 scanf("%d", &m); 13 printf("Year: "); 14 scanf("%d", &y); 15 // 1月2月当作前一年的13,14月 16 if (m == 1 || m == 2) 17 { 18 m += 12; 19 y--; 20 } 21 // 判断是否在1752年9月3日之前,实际上合并在一起倒更加省事 22 if ((y < 1752) || (y == 1752 && m < 9) || (y == 1752 && m == 9 && d < 3)) 23 { 24 // 因为日期控制在1700年2月28日后,所以不用考虑整百年是否是闰年 25 a = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 + 5) % 7; 26 } 27 else 28 { 29 // 这里需要考虑整百年是否是闰年的情况 30 a = (d + 2 * m + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7; // 实际上这个可以当做公式背下来 31 } 32 printf("it's a %s ", name[a]); 33 return 0; 34 }