#include < stdio.h>
#include <time.h>
int
main()
{
#ifdef 달력
int
monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int
i_month=0,i_m_day,monthsum=0,i=0,day=0;
while
(i_month<=0||i_month>=13)
{
printf
(
"보고 싶은 '월'을 입력하세요 : "
);
scanf
(
"%d"
, &i_month);
fflush
(stdin);
}
printf
(
"\n\t\t# # # # 2007년 %d월 달력 # # # #\n==============================================================\n"
,i_month);
i_m_day=monthday[i_month-1];
for
(i=0;i<=i_month-1;i++)
monthsum+=monthday[i];
monthsum-=(i_m_day-1);
day=monthsum%7;
printf
(
"\t일\t월\t화\t수\t목\t금\t토\n"
);
for
(i=0;i<=day-1;i++)
printf
(
"\t"
);
for
(i=1;i<=i_m_day;i++)
{
printf
(
"\t%2d"
,i);
if
((i+day)%7==0)
printf
(
"\n"
);
}
printf
(
"\n==============================================================\n"
);
#elif defined 기념일계산프로그램
int
monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int
i_year=0,i_month=0,i_day=0,s_year,s_month,s_day,i,cm_sum=0,c_year;
long
int
sum=0;
time_t
today;
struct
tm
*t;
today =
time
(NULL);
t =
localtime
(&today);
s_year=t->tm_year+1900;
s_month=t->tm_mon+1;
s_day=t->tm_mday;
printf
(
"\n오늘 %d년 %d월 %d일 입니다.\n"
,s_year,s_month,s_day);
printf
(
"**** 오늘보다 이전의 날짜를 선택하세요 ****\n\n"
);
while
(i_year<=0||i_year>=s_year+1)
{
printf
(
"기념일의 '연도'를 입력하세요 : "
);
scanf
(
"%d"
, &i_year);
fflush
(stdin);
}
while
(i_month<=0||i_month>=13)
{
printf
(
"기념일의 '월'을 입력하세요 : "
);
scanf
(
"%d"
, &i_month);
fflush
(stdin);
}
while
(i_day<=0||i_day>=32)
{
printf
(
"기념일의 '일'을 입력하세요 : "
);
scanf
(
"%d"
, &i_day);
fflush
(stdin);
}
printf
(
"\n오늘은 (%d)년 (%d)월 (%d)일 로부터\n"
,i_year,i_month,i_day);
c_year=i_year;
for
(i_year;i_year<=s_year-1;i_year++)
{
if
(i_year%400==0 || (i_year%100!=0 && i_year%4==0))
sum+=366;
else
sum+=365;
}
if
((s_year%400==0 || (s_year%100!=0 && s_year%4==0))&&s_month>=3)
sum+=1;
if
((c_year%400==0 || (c_year%100!=0 && c_year%4==0))&&i_month>=3)
sum-=1;
for
(i=0;i<=s_month-2;i++)
sum+=monthday[i];
sum+=(s_day-1);
for
(i=0;i<=i_month-2;i++)
cm_sum+=monthday[i];
sum-=cm_sum;
sum-=i_day;
sum+=2;
printf
(
"( %d )일째 되는 날입니다.\n\n"
,sum);
#elif defined 디데이계산프로그램
int
monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
int
i_year=0,i_month=0,i_day=0,s_year,s_month,s_day,i,cm_sum=0,c_year;
long
int
sum=0;
time_t
today;
struct
tm
*t;
today =
time
(NULL);
t =
localtime
(&today);
s_year=t->tm_year+1900;
s_month=t->tm_mon+1;
s_day=t->tm_mday;
printf
(
"\n오늘 %d년 %d월 %d일 입니다.\n\n"
,s_year,s_month,s_day);
printf
(
"**** 오늘 이후의 날짜를 선택하세요 ****\n\n"
);
while
(i_year<=s_year-1||i_year>=9999)
{
printf
(
"디데이의 '연도'를 입력하세요 : "
);
scanf
(
"%d"
, &i_year);
fflush
(stdin);
}
while
(i_month<=0||i_month>=13)
{
printf
(
"디데이의 '월'을 입력하세요 : "
);
scanf
(
"%d"
, &i_month);
fflush
(stdin);
}
while
(i_day<=0||i_day>=32)
{
printf
(
"디데이의 '일'을 입력하세요 : "
);
scanf
(
"%d"
, &i_day);
fflush
(stdin);
}
printf
(
"\n(%d)년 (%d)월 (%d)일 까지의 D-Day는?\n\n"
,i_year,i_month,i_day);
c_year=s_year;
for
(s_year;s_year<=i_year-1;s_year++)
{
if
(s_year%400==0 || (s_year%100!=0 && s_year%4==0))
sum+=366;
else
sum+=365;
}
if
((s_year%400==0 || (s_year%100!=0 && s_year%4==0))&&s_month>=3)
sum+=1;
if
((c_year%400==0 || (c_year%100!=0 && c_year%4==0))&&i_month>=3)
sum-=1;
for
(i=0;i<=i_month-2;i++)
sum+=monthday[i];
sum+=(i_day-1);
for
(i=0;i<=s_month-2;i++)
cm_sum+=monthday[i];
sum-=cm_sum;
sum-=s_day;
sum+=1;
printf
(
"( %d )일 남았습니다. \n\n"
,sum);
#else
printf
("
#endif
return
0;
}
</
time
.h>