실습과제 모음
달력 만들기 실습 결과
TanSanC
2013. 12. 15. 11:22
#include#include using namespace std; int leapYear(int year); // 리턴값 1 : 윤년 // 리턴값 0 : 평년 int dayByYear(int year); // 0 1 2 3 4 5 6 // "일","월","화","수","목","금","토" int dayByMonthYear(int year, int month); // 0 1 2 3 4 5 6 // "일","월","화","수","목","금","토" int totalDayCountByMonthYear(int year, int month); int main() { char* week[7] = {"일","월","화","수","목","금","토"}; int year, month; printf("연도를 입력하세요 : "); scanf("%d", &year); printf("월을 입력하세요 : "); scanf("%d", &month); printf("%s\n", week[dayByMonthYear(year, month)]); printf("%5s%5s%5s%5s%5s%5s%5s\n", "일","월","화","수","목","금","토"); for( int i = 0 ; i < dayByMonthYear(year, month) ; i++ ) { printf(" "); } int wcount = dayByMonthYear(year, month); for ( int i = 1 ; i <= totalDayCountByMonthYear(year, month) ; i++ ) { printf("%5d", i); if( wcount%7 == 6) { printf("\n"); } wcount++; } return 0; } int totalDayCountByMonthYear(int year, int month) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 2: if( leapYear(year) ) { return 29; } else { return 28; } default: return 30; } } int dayByMonthYear(int year, int month) { int wcount=0; wcount=(365*year + year/4 - year/100 + year/400)%7; // 0 ~ 6 for( int i = 1 ; i < month ; i++ ) { wcount += totalDayCountByMonthYear(year, i); } // 30 ~ 300 wcount %= 7; return wcount; } int dayByYear(int year){ int wcount=0; wcount=(365*year + year/4 - year/100 + year/400)%7; return wcount; } int leapYear(int year) { if( year % 4 == 0) { if( year % 100 == 0) { if( year % 400 == 0 ) { return 1; // 윤년 } else { return 0; // 평년 } } else { return 1; // 윤년 } } else { return 0; // 평년 } }