/* 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");
}
}
댓글 없음:
댓글 쓰기