题目描述:
给定一个日期,算出是星期几
样例输入:
9 October 2001
14 October 2001
样例输出:
Tuesday
Sunday
#include<stdio.h> #include<string.h> #define isleap(x) x%100!=0&&x%4==0||x%400==0?1:0 int dayofmonth[13][2]={ 0,0, 31,31, 28,29, 31,31, 30,30, 31,31, 30,30, 31,31, 31,31, 30,30, 31,31, 30,30, 31,31, }; struct Date{ int year; int month; int day; void nextday() { day++; if(day>dayofmonth[month][isleap(year)]) { day=1; month++; if(month>12) { month=1; year++; } } } }; int buf[3001][13][32]; char weekname[7][20]={ "Sunday", "Monday", "Tuesday", "Wednesday", "Thurday", "Friday", "Satrday", }; char namemonth[13][20]={ "", "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December", }; int main() { Date tmp; int count=0; tmp.day=1; tmp.month=1; tmp.year=0; while(tmp.year!=3001) { buf[tmp.year][tmp.month][tmp.day]=count; tmp.nextday(); count++; } int y,m,d; char s[20]; while(scanf("%d%s%d",&d,s,&y)!=EOF) { for(m=1;m<=12;m++) { if(strcmp(s,namemonth[m])==0) { break; } } int days=buf[y][m][d]-buf[2012][7][16]; days+=1; puts(weekname[(days%7+7)%7]); } return 0; }