본문 바로가기

공부/C언어

C언어 - 달력 프로그램 만들기

달력을 출력하는 프로그램을 만든적이 있더라구요 ㅎ

for 문과 while문을 사용해서 만들기가 과제 였습ㄴ디ㅏ .ㅎ

달력은 어떻게 만드는 줄은 아시죠?

당연히 윤년은 계산해야 합니다 .ㅎ

 

알고리즘이 생각보다 더럽더라구요..

전 다시 만들라면 못 만들듯..ㅋㅋㅋ

 

 

생각보다 잘 안보이네요 ..ㅎ

시작해서 연도 입력받고 달 입력받고

for문과 while문을 돌려서 윤년을 계산하고

달에 따라 30인지 31일인지 29일인지 28일인지를 계산해서 출력해 주는 프로그램이에요 ㅎ

 

 

젤 중요한 소스코드를 볼까나요/`

 

#include <stdio.h>

int main(void)

{

int year;

int month;

int week; //변수 선언

int day;

int yoon;

int a,b,c=0;

while(1)

{

printf ("알고싶은 연도를 입력하세요.\n");//연도 입력받기

scanf("%d",&year);

printf ("알고싶은 달을 입력하세요.\n");//월수 입력받기

scanf("%d",&month);

if(year%4==0&&year%100!=0||year%400==0)//윤년인지 확인함

{

yoon = 1;//윤년이다

}

else

{

yoon = 0;//윤년이 아니다

}

if(month>12 || month == 0) //달이 12이상 또는 0일 경우

{

printf("잘못된 달을 입력하셨습니다.\n\n");//잘못된 월을 입력했을때

}

day = 0;

for(a=1;a<=month;a++) // 달의 전달의 날짜를 더해줌

{

if(a==2||a==4||a==6||a==8||a==9||a==11)//2 또는 4 또는 6 또는 8 또는 9 또는11 일 경우

{

day+=31;//31을 더해줌

}

if(a==5||a==7||a==10||a==12)//5또는7또는10또는12 일 경우

{

day+=30;//30을 더해줌

}

if(a==3)

{

if(yoon == 1)

{

day+=29;

}

else

{

day+=28;

}

}// 윤달에는 29을 아니면 28일을 더해줌

}

week = (year*365 + year/4 - year/100 + year/400 -1 + day)%7; // 전체 날짜를 더하여 요일을 계산

if(month<13 && month != 0)//달이 13미만이고 0이 아닌경우

{

printf ("%d년의 %d월의 달력입니다. \n\n",year,month);//몇년 몇월의 달력입니다 출력

printf(" 일 월 화 수 목 금 토\n");}//달력의 형식

if(month==4||month==6||month==9||month==11)//달이 4또는 6또는 9또는 11월인 경우

{

for(a=0;a<week;a++)//주에 하나씩 더한다

{

printf(" ");

c++;

}//처음 날의 공백 만큼 띄워주기 위해 만든것

for(b=1;b<=30;b++)

{

printf("%3d",b);

if((c+b)%7==0)

{

printf("\n");

}

}//1일부터 토요일이 되면 다음주로 넘기게 만들어줌

}

if(month==2)//2월일 때

{

if(yoon == 1)//윤년인 경우

{

for(a=0;a<week;a++)

{

printf(" ");

c++;

}//처음 날의 공백을 메꿔주기 위한 것.

for(b=1;b<=29;b++)

{

printf("%3d",b);

if((c+b)%7==0)

{

printf("\n");

}

}//윤년이기에 29일까지 해줌

}

.............................

 

윤년이 아닌경우도 해주면 되요..ㅎ

소스도 더러운 듯 해요..

저걸 어케 만들었나 싶기도 하고..ㅋㅋㅋ

 

 

달이 4, 6, 9, 11 월인 경우를 따로 하고

1, 3, 5, 7, 8, 10, 12월인 경우를 따로 했더라구요.?

왜 그랬지?ㅋㅋㅋㅋㅋㅋㅋㅋㅋ

알고리즘 보면 알꺼에요 ㅋ

제 생각엔..

윤년이랑 무슨 관계가 있는듯..?ㅋㅋㅋ

 

아무튼..

달력은 저렇게 만들면 됩니다 ..ㅎ

겁나 잘만들었죠???ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

실은 지금은 못 만듬..

왜지..?

나이를 더 먹었는데..?

원래 초창기에 들어오는 지식이 많아서 잘 만드는 거에요 ..ㅋㅋㅋㅋ

 

아무튼.. 달력 프로그램은 여기까지 입니다!!ㅋㅋ