만년달력입니다.
~cpp #include <iostream> using namespace std; void main() { bool fyun = 0; //윤달인지 아닌지 판별하는 변수. 0이면 윤달이 아니다. 1이면 윤달이다. int countday = 0; //날짜 세는 변수. int findday = 1; //매년 추가되는 날짜. int endmonth, endline; //달의 끝, 주의 끝. int year,month; cout << "알고 싶은 년, 월, 입력해보시지!!"; cin >> year; cin >> month; if (year == 1) findday = 1; else { for (int i = 2;i<=year;i++)//각 년마다 밀리는 날짜 카운트 { fyun = 0; if((i-1)%4 == 0) fyun = 1; if((i-1)%100 ==0) fyun = 0; if((i-1)%400 == 0) fyun = 1; if (fyun == 1) findday += 2; else if (fyun == 0) findday += 1; } } for (int k = 1;k<month;k++)//각 년에서의 월까지의 중첩되는 날짜 카운트 { if (k == 1 || k == 3 || k == 5 || k == 7 || k == 8 || k == 10 || k == 12) countday += 31; else if (k == 2) { fyun = 0; if(year%4 == 0) fyun = 1; if(year%100 ==0) fyun = 0; if(year%400 == 0) fyun = 1; countday += (28+fyun); } else countday += 30; } findday = (findday%7+countday)%7;//각 월 첫째날의 요일. cout << year << "년\t\t\t" << month << "월" << endl; cout << "Sun\t Mon\t Tue\t Wed\t Thr\t Fri\t Sat" << endl; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) endmonth = 31; else if (month == 2) { fyun = 0; if(year%4 == 0) fyun = 1; if(year%100 ==0) fyun = 0; if(year%400 == 0) fyun = 1; endmonth = (28+fyun); } else endmonth = 30; endline = findday; for(int q = 0;q<findday;q++) cout << "\t "; cout << "1\t "; for(int n = 2 ; n <= endmonth; n++)//출력부. endline은 주의 끝. { endline++; if (endline == 7) { endline = 0; cout << endl; } cout << n << "\t "; } cout << endl; }