검색결과 리스트
전체 글에 해당되는 글 238건
- 2009.11.24 달력 만들기
글
달력 만들기
#include stdio.h
void cho1(); //표준 입출력 작업을위한 헤더파일.
void cho2();
int main()
{
int choice ;
while(1)
{
printf("=======================\n");
printf("만년달력 프로그램입니다\n"); //만년달력 프로그램 시작
printf(" 1. 달력출력\n"); //세개의 항목들
printf(" 2. 요일출력\n");
printf(" 3. 종료 \n");
printf("=======================\n");
printf("메뉴(1,2,3)를 입력하세요:"); //사용자 입력
scanf("%d", &choice);
switch(choice)
{
case 1 : cho1();
break;
case 2 : cho2();
break;
case 3 : printf("종료 되었습니다\n");
return 0;
}
if ( choice < 1 || choice > 3 ) printf("잘못된 입력입니다.\n");
}
return 0;
}
// 년, 월을 입력하면 해당년월의 시작요일을 구하는 함수
int find_first_yoil( int year, int month, int *mon_size )
{
int temp_year = 1, start_yoil = 1, i;
int days[12] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
// 해당년의 1월 1일의 요일을 구하는 루틴
while(1)
{
if ( temp_year == year ) break;
if ( ( temp_year % 4 == 0 && temp_year % 100 != 0 ) || temp_year % 400 == 0 ) start_yoil++;
start_yoil++;
temp_year++;
}
// 입력한 년도가 윤년인 경우 2월달 하루 추가
if ( ( year % 4 == 0 && year % 100 != 0 ) || year % 400 == 0 ) days[1] = 29;
// 입력한 월까지 가서 시작요일을 구함
for( i = 0; i < month - 1; i++ )
start_yoil += days[i];
// 해당월의 일수를 리턴
*mon_size = days[month-1];
// 구한 요일 리턴
return start_yoil % 7;
}
void cho1()
{
int year, month, start_yoil, mon_size, cal_garo, i, i2;
int startlist[7] = { 1, 0, -1, -2, -3, -4, -5 };
while(1)
{
printf("원하는 년도, 월을 입력하시오\n(단 년도는 1800-2200까지): ");
scanf( "%d, %d" , &year, &month );
if ( year >= 1800 && year <= 2200 && month >= 1 && month <= 12 ) break; //년도의 입력범위 지정
else printf( "다시 입력 바랍니다.\n" );
}
start_yoil = find_first_yoil( year, month, &mon_size );
// 달력 가로 줄수 구하기
cal_garo = ( start_yoil + mon_size ) / 7 + 1;
// 달력 출력
printf("\n[%d년 %d월]\n 일 월 화 수 목 금 토 \n", year, month);
for( i = 0; i < cal_garo; i++ )
{
i2 = startlist[start_yoil] + 7*i;
// 달력의 첫줄 출력
if ( i == 0 )
{
printf(" ");
while(1)
{
if ( i2 > 0 ) printf( "%2d", i2 );
else printf( " " );
printf( " " );
i2++;
if ( i2 == startlist[start_yoil] + 7 ) break;
}
printf("\n");
}
// 달력의 마지막줄 출력
else if ( i + 1 == cal_garo )
{
printf(" ");
while(1)
{
if ( i2 > mon_size ) break;
printf( "%2d ", i2 );
i2++;
}
printf("\n");
}
// 달력의 중간줄 출력
else printf(" %2d %2d %2d %2d %2d %2d %2d\n", i2, i2 + 1, i2 + 2, i2 + 3, i2 + 4, i2 + 5, i2 + 6 );
}
}
void cho2()
{
int year, month, day, mon_size, yoil;
char st[7][3] = { "일", "월", "화", "수", "목", "금", "토" };
while(1)
{
printf( "원하는 년도, 월, 일을 입력하시오\n(단 년도는 1800-2200까지): ");
scanf( "%d, %d, %d" , &year, &month, &day );
if ( year >= 1800 && year <= 2200 && month >= 1 && month <= 12 && day >= 1 && day <= 31 ) break;
else printf("다시 입력 바랍니다.\n");
}
//첫달의 요일을 구한다.
yoil = find_first_yoil( year, month, &mon_size );
//구한 첫달의 요일에 (일수-1)를 더한다.
yoil += (day - 1);
//7로 나눠 요일을 구한다.
yoil = yoil % 7;
printf("%d년 %d월 %d일은 %s요일입니다.\n", year, month, day, st[yoil] );
}
'프로그래밍' 카테고리의 다른 글
파일 입출력3 (0) | 2009.12.09 |
---|---|
파일입출력2 (0) | 2009.12.04 |
파일입출력 (1) | 2009.11.30 |
카드게임 (0) | 2009.11.17 |
자판기 프로그램 (0) | 2009.11.10 |
운영체제 도서관리 프로그램 (0) | 2009.10.18 |
운영체제 파일입출력2 (0) | 2009.10.17 |
운영체제 파일입출력 (0) | 2009.10.17 |
운영체제 자판기 프로그램 (1) | 2009.10.17 |
운영체제 버블소트 (0) | 2009.10.17 |