2014년 10월 26일 일요일

만년 달력 소스(참고용)

/*  c:\calendar.h  */
  /*  달력 출력 헤더 파일  c:\calendar.h  */
  #include<stdio.h>
  #define  Yunyeun(y)    (y%4==0 && y%100!=0 || y%400==0)
  /* 서기 1년 1월 1일~ y년 m월 d일까지의 경과된 날수 파악하기 */
  int  Nalsu(int y,int m,int d)
  {
     long t1,t2, tot;
     int  dal[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
     int  a;
     /*서기 1년 1월 1일~y-1년 12월 31일까지 경과된 날수 */
     t1= (y-1)*365L + (y-1)/4 - (y-1)/100  + (y-1)/400;
     /* y년 1월 1일 ~ m-1월 말일까지의 경과된 날수 */
    /* y년이 윤년이면 2월달의 날 수를 하루 더해줌(29일로 만듬) */
    if( Yunyeun(y) )dal[2]++;
    t2=0;
    for(a=1;a<m;a++)
          t2+=dal[a];
    /* 서기 1년 1월 1일~ y년 m월 d일까지의 경과된 날수 */
    tot = t1 + t2 + d;
    return(tot);
 }
 /* 요일 돌려받기 */
char *Yoil(int y,int m, int d)
{
     char *yo[]={"일","월","화","수","목","금","토"};
     return( yo[Nalsu(y,m,d)%7]  );
}
 /* 띠 돌려받기 */
char *Ani(int y)
{
     char *ddi[]={"원숭이","닭","개","돼지","쥐","소","호랑이",
                   "토끼","용","뱀","말","양"};
     return( ddi[y%12] );
}
 /* 달력 출력하기 */
 void Calendar(int y, int m)
 {
    int k[6][7]={0,};
    int a,b;
    char *yo[]={"일","월","화","수","목","금","토"};
    int  start= Nalsu(y,m,1)%7;
    int  dal[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    if(Yunyeun(y))dal[2]++;
    for(a=0;a<dal[m];a++)
           k[0][a+start]= (a+1);

    printf("\n\n%35d년 %d월\n",y,m);

    for(a=0;a<7;a++)
          printf("%10s", yo[a]);
    printf("\n");
    for(a=0;a<6;a++)
        {
          for(b=0;b<7;b++)        
                {
                  if(k[a][b]!=0)printf("%10d",k[a][b]);
                        else   printf("%10c",32);
                }
          printf("\n");
        }
 }  

댓글 없음: