POJ 2080 Calendar
#include<stdio.h>
#include<math.h>
int py(int a)
{ int y;
if(a%4==0&&a%100!=0||a%400==0)
y=1;
else y=0;
return y;
}
int main()
{ int n;
while(scanf("%d",&n)&&(n!=-1))
{ int nian,yue,ri,i,j,k,a;
int m[13]={31,28,31,30,31,30,31,31,30,31,30,31};
j=366;
++n;
//用a判断周几
a=n%7;
a=(a+5)%7;
//判断年份
for(i=2000;n>j;i++)
{ if(py(i)==1)
{n-=366;k=366;}
else
{n-=365;k=365;}
}
nian=i;
k=31;
//判断月份
if(py(nian)==1)
m[1]+=1;
for(i=1;n>k;i++)
{ //if(py(nian)==1)
//m[1]+=1;
k=m[i];
n-=m[i-1];
}
yue=i;
// 没有这两句会出现部分年份会出现14月,我也不知道怎么出现的,就用判断更正了
if(yue>12)
{nian+=1;yue=1;}
// 判断几号
ri=n;
//输出
printf("%d-%02d-%02d ",nian,yue,ri);
switch(a)
{ case 0: printf("Sunday\n");break;
case 1: printf("Monday\n");break;
case 2: printf("Tuesday\n");break;
case 3: printf("Wednesday\n");break;
case 4: printf("Thursday\n");break;
case 5: printf("Friday\n");break;
case 6: printf("Saturday\n");break;
}
}
return 0;
}
现在还不知道这个程序没有红的那几句为啥会出现14月;