计算生日是星期几
Description
编写一个程序,只要输入年月日,就能回答那天是星期几。
Input
输入一个日期,包括年、月、日。(一组测试数据)
Output
输出这个日期是星期几。
Sample Input 1 1 1
2 1 1
2006 7 10
Sample Output Monday
Tuesday
Monday
Hint
1、 已知公元1 年1 月1 日是星期一 2、 算法提示:如果输入的是2006 年3 月12 日,计算方法是 (1) 先计算从公元0001 年初(0001-1-1)到2005 年末(2005-12-31)共多少天,注意其中 有闰年,闰年是366 天,平年是365 天。闰年的判断条件满足(见教材例3.8 题) : (( year%4==0 && year%100!=0 )||(year%400==0)) (2) 然后再计算2006 年1 月1 日到2006-3-12 是多少天。注意同样判断本年度是否闰年, 即二月份是28 天还是29 天。 (3) 上述两部分相加即从公元0001 年初(0001-1-1)到2006 年末(2006-3-12)的天数, 用该天数模7(total%7)即得到星期数。
#include
int main()
{
int y, m, d, i;
int year, day;
int month[] = {0, 31, 0, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
char week[][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
while (scanf("%d %d %d", &y, &m, &d) == 3){
year = 1;
day = d;
while (year
day += year%400==0||(year%4==0&&year%100!=0) ? 366 : 365;
year++;
}
if (y%400==0||(y%4==0&&y%100!=0)) month[2] = 29;
else month[2] = 28;
for (i=1; i
day += month[i];
printf("%s\n", week[day%7]);
}
return 0; }