#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
#define ISYEARP(x) ((x%100!=0 && x%4==0 )||( x%400==0))?1:0
#define THISYEAR 2013
#define MONTH 2
#define DAY 28
#define WEEK 4
typedef struct Date{
int year;
int month;
int day;
}Date;
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
};
//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};
int dayofyear[3001][13][32]={0};
char monthName[13][20]={
"","January","February","March","April","May","June","July","August","September","October","November","December"
};
char weekName[7][20]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};
int main()
{
Date date;
int year,month,day,week;
char monthstr[20];
long cnt=0;
long lapday=0;
date.year=0;
date.month=1;
date.day=1;
//*
while(date.year!=3001)
{
dayofyear[date.year][date.month][date.day]=cnt;
date.day++;
if(date.day>dayofMonth[date.month][ISYEARP(date.year)])
{
date.day=1;
date.month++;
if(date.month>12)
{
date.month=1;
date.year++;
}
}
cnt++;
}
//*/
while(scanf("%d%s%d",&day,&monthstr,&year)!=EOF){
for(month=1;month<=12;month++)
{
if(strcmp(monthstr,monthName[month])==0)break;
}
lapday=dayofyear[year][month][day]-dayofyear[THISYEAR][MONTH][DAY];//注意顺序!!!
lapday=lapday+WEEK;//处理方法1
week=(lapday%7+7)%7;//处理方法2比while好!
printf("%s\n",weekName[week]);
}
return 0;
}
//换行
机试教程:7 day of week
最新推荐文章于 2021-04-12 18:16:27 发布