#include<stdio.h>
int days_of_year(int year);
int days_of_month(int year,int month);
int main()
{
int n;
char wstr[][20]={"Saturday","Sunday","Monday","Tuesday","Wednesday","Thursday","Friday"};//周几的字符串常量
scanf("%d",&n);
while(n!=-1)
{
int week,year=2000,month=1,day=1;//2000年1月1日起
week=n%7;
while(n>=days_of_year(year)) //枚举到指定年份
{
n=n-days_of_year(year);
year++;
}
while(n>=days_of_month(year,month)) //枚举到指定月份
{
n=n-days_of_month(year,month);
month++;
}
day=day+n;
printf("%d-",year);
if(month<10)
{
printf("0%d",month);
}
else
{
printf("%d",month);
}
if(day<10)
{
printf("-0%d",day);
}
else
{
printf("-%d",day);
}
printf(" %s\n",wstr[week]);
scanf("%d",&n);
}
return 0;
}
int days_of_year(int year) //返回year年天数
{
if( (year%400==0) ||( (year%4==0)&&(year%100!=0) ) )
{
return 366;
}
else
return 365;
}
int days_of_month(int year,int month) //返回year年month月的天数
{
switch(month)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:
{
return 31;
}
case 2:
if(days_of_year(year)==365) return 28;
else return 29;
default:
return 30;
}
}
求经过n天后的年月日及星期几
Inputcopy | Outputcopy |
---|---|
1730 1740 1750 1751 -1 | 2004-09-26 Sunday 2004-10-06 Wednesday 2004-10-16 Saturday 2004-10-17 Sunday |