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月;

posted @ 2013-07-31 15:52  hpu张亚飞  阅读(217)  评论(0编辑  收藏  举报