解答:
#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
/*
21 December 2012
5 January 2013
*/
char month_name[12][10] = {
"January", "February", "March", "April", "May", "June",
"July", "August", "September", "October", "November", "December",
};
char Week[7][10] = {
"Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday","Sunday"
};
int main() {
int year, month, day, week_of_day;
char month_str[10];
while(scanf("%d %s %d", &day, month_str, &year) != EOF) {
//将月份字符串转换为数字
for(int i=0; i<12; i++) {
if(!strcmp(month_str, month_name[i])) {
month = i + 1;
break;
}
}
//使用基姆拉尔森计算公式计算出周几
if(month==1||month==2){
month+=12;
--year;
}
week_of_day = (day+2*month+3*(month+1)/5+year+year/4-year/100+year/400)%7;
printf("%s\n", Week[week_of_day]);
}
return 0;
}
坑:
- 基姆拉尔森计算公式
- 英文要打对