题解 | #Day of Week#
Day of Week
https://www.nowcoder.com/practice/a3417270d1c0421587a60b93cdacbca0
#include <stdio.h>
#include <string.h>
//闰年返回1
int IsLeapYear(int year){
return (year%400 == 0 || (year%100 != 0 && year%4 == 0));
}
int main() {
int day, year;
char mon[14];
char month[13][14] = {"","January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"};
char week[7][14]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int mon_day[2][13] = {{0,31,28,31,30,31,30,31,31,30,31,30,31},
{0,31,29,31,30,31,30,31,31,30,31,30,31}};
while (scanf("%d %s %d", &day, mon, &year) != EOF) {
int _day = 0;
//获取给定年份日期相对于1年1月1日过去了天
for (int i = 1; i < year; ++i) {
_day += 365 + IsLeapYear(i);
}
int j = 0;
//再加上 给定年份的月所对应前面的天数
while (strcmp(mon, month[j]) != 0) {
_day += mon_day[IsLeapYear(year)][j++];
}
//最后再加上天数
_day += day;
int w = _day%7;
printf("%s\n",week[w]);
}
return 0;
}


查看11道真题和解析