본문 바로가기

공부/C언어

C언어 - 날 수 구하기 프로그램 (달의 총 일수 구하는 프로그램)

별걸 다 했었네요..

전 제목쓰면서 저게 뭔 프로그램인가 했어요..ㅋㅋ

저것도 단순한 거더라구요 ..ㅎ

1학년 때는 단순한 것만 하니깐요..

'날 수 구하기' 라는 것이 뭣이냐면!

 

일 수를 구하는 겁니다.

예를 들어 사용자가 10 을 입력을 했습니다.

10월 달이란 얘기가 됩니다.

그럼 10월은 31일 까지 있으므로 프로그램은 31을 출력하면 되지만

복병은 2월에 있습니다.

이 2월 때문에 과제가 나온 것 같아요..ㅋ

2월은 윤달이라고 해서 28일까지 있는 해와 29일 까지 있는 해가 있습니다.

사용자가 2월을 입력하게 되면 프로그램은 또 묻습니다.

바로 년도를 묻게 되는거죠..

윤년을 계산하여 해당하는 년도가 윤년이면 28일을 출력하고

해당하는 년도가 윤년이 아닌경우 29일을 출력하게 됩니다.

 

쉽게 말해 정리를 해 드릴께요 .ㅎ

정리같지 않겟지만..?ㅋ

사용자에게 몇월 생인지 묻는다.

2월생인지 확인한다.

-1. 2월생이면 몇 년 생인지 확인한다.

-2. 해당 연도가 윤년인지 확인한다.

-2-1. 윤년이면 29일 출력.

-2-2. 윤년이 아니면 28일 출력.

1, 3, 5, 7, 8, 10, 12월인지 확인한다.

-1. 맞으면 31일 출력.

4, 6, 9, 11월인지 확인한다.

-1. 맞으면 30일 출력.

 

이런식으로 진행이 되는 겁니다 ..ㅋ

이제 알고리즘을 볼까요?!

근데 알고리즘이 좀.. 지저분 하더라구요..?

이번엔 도구를 쓰지 않고 한글에서 직접 작업한 것 같더라구요.....

 

 

 

자 어떤가요..

겁나 더럽죠..ㅋㅋㅋㅋ

그래도 알아 볼 수 는 있지 않은가요?ㅋㅋ

저만그래요?ㅋㅋㅋㅋ

알고리즘은 위에 있는 말을 도식화 한 것이기 때문에 또 설명 안해드려도 되겟죠?ㅋㅋ

 

그럼 소스투척할게요 ㅋㅋ

 

 

/*#include <stdio.h>

 

void main (void)

{

int month;//달 변수

int years=0;//연도 변수

 

printf("태어난 달을 입력하시오.\n");//태어난 달을 입력하시오

scanf("%d", &month);//달 입력

 

if (month < 1 || month > 12) //달이 일 이하또는 달이 12이상

{

printf("1에서 12까지의 숫자로 다시 입력하시오.\n"); //1에서 12까지의 숫자로 다시 입력

}

else if(month==2) //2월 일 경우

{

printf("태어난 연도를 입력하시오.\n");//태어난 연도 입력를 입력하시오

scanf("%d", &years);//연도 입력

}

else if(years <= 0 || years > 2009)//연도가 0보다작거나같거나 연도가 2009이상일 경우

{

printf("연도를 다시 입력하시오.\n"); //연도 다시 입력

}

else if(years%4==0&&years&100!=0||years%400==0) //연도가4의배수이고100의배수는아니되400의배수

{

printf("29일 입니다.\n");//29일입니다 출력

}

else //아니면

{

printf("28일 입니다.\n");//28일 입니다 출력

}

 

 

if(years%4 == 0 && month==2) //년도가 4로 나눠지고 달이 2일일때

{

printf("29일 입니다.\n");//29일 입니다 출력

}

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

이 프로그램 만들려면 윤년계산하는 방법 알고 게셔야 하는건 아시죠?!

윤년 계산은...

주석에서도 볼 수 있듯이..ㅋ

연도가 4의 배수이고 100의 배수는 아니면서 400의 배수가 되어야 윤년이 안됩니다.

그리고 두번째 조건은 연도가 4로 나누어지고 달이 2월일 때 윤년이 아닙니다!

윤년이 아닐 조건이네요 ㅋㅋㅋ

그리고 2009년까지만 해 놓은 이유는..

그래요... 2009년에 만들어서 그래요 ..ㅋㅋㅋㅋㅋㅋㅋ

신선한 과거네요 ㅋ

 

아무튼.. 저렇게 윤년이 아닌 조건을 넣고 만들었음.. 잘 나오나 테스트를 해 보아야 겟지요?!ㅋㅋ

 

 

윤년이 아닌 경우가 나왔네요 .ㅎ

2008년은 달력 보시면 알겠지만 29일로 되어있었습니다 .ㅎ

 

이 프로그램을 만든 2009년은 28일까지로 되어있으며 윤년인 해였습니다 .ㅎ

당시 프로그램의 제목은 사용자의 태어난 달을 기준으로 하는 거였네요 ㅎ

윤년 계산하는 법은 이제 아시겟죠?ㅋㅋㅋ

윤년 계산 부분은 코드에서 빼지 않았으니.. 도움이 되었음 해요ㅠㅠㅋㅋㅋ