特别注意输出时
days+1容易出错
#include<stdio.h>
int LeapYear(int year){
if(year%4==0){
if(year%100==0&&year%400!=0)
return 0;
else
return 1;
}
return 0;
}
int YearDays[2]={365,366};
int Month[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};
char week[7][10]={"Saturday", "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday","Friday"};
int main(){
int i,j,days,weeks,leap,m,d;
while(scanf("%d",&days)!=EOF&&days!=-1){
weeks=days%7;
for(i=2000;;i++){
leap=LeapYear(i);
d=YearDays[leap];
if(days>=d)
days-=d;
else
break;
}
for(j=1;j<=12;j++){
m=Month[leap][j];
if(days>=m)
days-=m;
else
break;
}
printf("%d-%02d-%02d %s\n",i,j,days+1,week[weeks]);
}
return 0;
}
2964: 日历问题最近的提交