[C언어] 달력출력 프로그램
- 최초 등록일
- 2007.04.06
- 최종 저작일
- 2007.04
- 12페이지/ 압축파일
- 가격 1,500원
소개글
배열과 함수를 이용하지 않고 달력 출력 프로그램을 작성.
입력된 연도/달에 해당하는 달력출력.
방향키 입력시 달/연도의 순환 출력.
연도 및 달이 입력되면 해당 달력을 출력하기 위해 초일을 알아올 필요가 있다. 이를 위해서는 해당연도의 초일 시작 요일을 알아야 하는데 이부분을 계산하기 위해서는 기준 연도 1979년을 시작으로 입력 연도와의 차이만큼 일정 수를 더해주는 방식을 생각할 수 있다. 1979년의 초일은 월요일이며, 요일은 총 7개이므로 모듈러 연산을 통해 요일을 구할 수 있을 것이다. 문제되는 것은 윤년이 되는데 이는 4로 나누어지며, 100의 배수가 아니거나, 400의 배수인 연도가 윤년이 될 것이다. 평년의 경우는 365일이며, 365일은 7로 모듈러 연산을 하면 1이 남는다. 윤년의 경우는 366일이며, 7로 모듈러 연산을 하면 2가 남는다. 따라서 입력연도와 기준연도간의 차이만큼 날짜를 세주는 변수에 평년은 1, 윤년은 2를 더하고 7로 모듈러 연산을 하여 초일을 구할 수 있을 것이다. 이때 모듈러의 결과는 0은 월요일이 되며, 순서에 따라 6은 일요일이 될 것이다. 주의 할 것은 입력된 해당 연도까지는 계산하지 말아야 한다. 이를 계산하면 다음 연도의 초일을 구하는 것이 되기 때문이다.
입력달의 초일은 앞서 구한 해당연도의 초일로부터 계산되어야 한다. 이때 1, 3, 5, 7, 8, 10, 12월은 총일수가 31일이며, 2월은 윤년의 경우 29일, 평년의 경우 28일이 된다. 나머지 달들은 모두 30일이다. 여기서 28일은 7로 모듈러 연산하면 결과가 0이 되어 더해 줄 필요가 없지만, 29일은 1, 30일은 2, 31일은 3이 되어 해당하는 달이 입력 달보다 선행하는 경우 날짜 계산 변수에 이를 모두 더해 주어야 한다. 어짜피 모듈러 연산을 할 것이기 때문에 연도의 초일을 구할 때와 마찬가지로 나머지 값들만 더해주면 된다. 계산이 끝나면 7로 모듈러 연산하여 시작하는 요일을 구할 수 있을 것이다.
컴파일 실행환경
C언어
압축파일 내 파일목록
calendar.dsw
calendar.ncb
calendar.plg
calendar.dsp
calendar.cpp
calendar.opt
calendar.hwp
Debug/vc60.idb
Debug/vc60.pdb
Debug/calendar.exe
Debug/calendar.pdb
Debug/calendar.pch
Debug/calendar.ilk
Debug/calendar.obj
참고 자료
없음