소개글
c언어로 작성한 월 단위의 달력 출력하는 프로그램입니다.숫자키패드의 방향키로 전월, 다음월 , 전년도 다음년도 로의 달력 이동이 가능하게 하였습니다.
윤년과 평년을 구하는 함수를 이용하여 월별 시작일과 총 날수를 구하여 작성하였습니다.
/* 년월 변경 가능한 color 달력출력하기
달력 첫 화면은 현재 년월 달력부터 시작해서 다음과 같은 키를 인식하도록 프로그래밍한다.
- 위화살표 (‘8’) key : 전년도 같은 월
- 위화살표 (‘2’) key : 다음년도 같은 월
- 위화살표 (‘4’) key : 전월(1월 상태였을 경우 전년도 12월로 변경)
- 위화살표 (‘6’) key : 다음월 (12월 상태였을 경우 다음연도 1월로 변경)
- ESC key (ascii code : 27 ) key : 달력프로그램 종료
*/
키보드를 이용한 달력의 이동과 color함수와 커서이동 함수를 사용한 달력모양으로 출력
#include
#include
#include
#define BLACK 0
#define LIGHTBLUE 9
#define LIGHTRED 12
#define LIGHTGRAY 7
int firstday(int ); //월별 첫 날자 위치지정함수
void textcolor(int ,int); //글자색 함수
void output(int year,int month,int); //달력모양 출력함수
void gotoxy(int x, int y);
int yearCheck(int ); //윤년 평년 구하는함수
int yearTotdate(int); //년도의 총 날수 구하는 함수
int dayTotdate(int); //요일 구하는 함수
int monthTotdate(int); //월의 총 날수구하는 함수
char control(int *,int *);
void main()
{
int year=2010,month=6,day=1,totdate,totmonth;
char end;
while(1){
totdate=yearTotdate(year);
totmonth=monthTotdate(month);
totdate+=totmonth;
totdate+=day;
if(yearCheck(year)==1 && month>=0){
totdate+=1;}
output(year,month,totdate);
end=control(&year,&month);
if(end==27){break;}
system("cls");
}
}
char control(int *year,int *month){
char ctr;
ctr=getch();
switch (ctr)
{
case `8` :*year-=1; break;
case `4` :*month-=1;if(*month<=0){*month=12; *year-=1;} break;
case `6` :*month+=1;if(*month>12){*month=1; *year+=1;} break;
case `2` :*year+=1; break;
}
return ctr;
}
컴파일 실행환경
Microsoft VIsual C++ 6본문내용
/* 년월 변경 가능한 color 달력출력하기달력 첫 화면은 현재 년월 달력부터 시작해서 다음과 같은 키를 인식하도록 프로그래밍한다.
- 위화살표 (‘8’) key : 전년도 같은 월
- 위화살표 (‘2’) key : 다음년도 같은 월
- 위화살표 (‘4’) key : 전월(1월 상태였을 경우 전년도 12월로 변경)
- 위화살표 (‘6’) key : 다음월 (12월 상태였을 경우 다음연도 1월로 변경)
- ESC key (ascii code : 27 ) key : 달력프로그램 종료
*/
키보드를 이용한 달력의 이동과 color함수와 커서이동 함수를 사용한 달력모양으로 출력
#include <stdio.h>
#include <conio.h>
#include <windows.h>
#define BLACK 0
#define LIGHTBLUE 9
#define LIGHTRED 12
#define LIGHTGRAY 7
int firstday(int ); //월별 첫 날자 위치지정함수
void textcolor(int ,int); //글자색 함수
void output(int year,int month,int); //달력모양 출력함수
void gotoxy(int x, int y);
int yearCheck(int ); //윤년 평년 구하는함수
int yearTotdate(int); //년도의 총 날수 구하는 함수
int dayTotdate(int); //요일 구하는 함수
int monthTotdate(int); //월의 총 날수구하는 함수
char control(int *,int *);
void main()
{
int year=2010,month=6,day=1,totdate,totmonth;
char end;
while(1){
totdate=yearTotdate(year);
totmonth=monthTotdate(month);
totdate+=totmonth;
totdate+=day;
if(yearCheck(year)==1 && month>=0){
totdate+=1;}
output(year,month,totdate);
end=control(&year,&month);
if(end==27){break;}
system("cls");
}
}
char control(int *year,int *month){
char ctr;
ctr=getch();
switch (ctr)
{
case `8` :*year-=1; break;
case `4` :*month-=1;if(*month<=0){*month=12; *year-=1;} break;
case `6` :*month+=1;if(*month>12){*month=1; *year+=1;} break;
case `2` :*year+=1; break;
}
return ctr;
}
압축파일 내 파일목록
달력출력하기.hwp
hw30.cpp
hw30.cpp