만년달력
~cpp #include <iostream> using namespace std; int main() { int year,month; cin >> year >> month; // 입력받음 int i,j,a; int arr[6][7]={{'0',},}; int ThirtyOne=0; for (i=1; i<month; i++) // ThirtyOne : month 이전의 달에서 31일이 있는 달의 갯수 if (i == 1 || i == 3 || i == 5 || i == 7 || i == 8 || i == 10 || i == 12) ThirtyOne++; if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12) a = 31; else if (month == 4 || month == 6 || month == 9 || month == 11) a = 30; else a = 0; // a : 몇 월이 몇 일 까지 있는가. int two = year / 4 - year / 100 + year / 400; // year 이전에 윤년의 갯수 int XOR; if (month > 2) // 윤년인지 평년인지 { if (year % 4 == 0) { if (year % 100 == 0) { if (year % 400 == 0) { XOR = +1; if (a==0) a = 29; } else { XOR = +2; if (a==0) a = 28; } } } else { XOR = +2; if (a==0) a = 28; } } // first를 // 1년 1 int day = (((year-1) * 365 + two) + ((month-1) * 30 + ThirtyOne - XOR)) % 7; int first = day + 1; if (first == 7) first = 0; int y = 1; // 일.. 1-28,29,30,31 i=0; int first_ = first; for (first; first<7; first++) // 첫번째 줄의 배열 값 입력 { arr[i][first] =y; y++; } for (i=1; i<6; i++) // 두번째 줄 이후의 배열 값 입력 { for (j=0; j<7; j++) //first는 1+ 전체 합 나누기 7의 나머지.. { arr[i][j] = y; y++; } } cout << "일\t월\t화\t수\t목\t금\t토" << endl; cout << "-----------------------------------------------------" << endl; i=0; for(int h=0; h<first_; h++) cout << "\t"; for (first_; first_<7; first_++) // 첫번째 줄의 배열 값 출력 { cout << arr[i][first_] << "\t"; } cout << "\n"; for (i=1; i<6; i++) // 두번째 줄 이후의 배열 값 출력 { for (j=0; j<7; j++) //first는 1+ 전체 합 나누기 7의 나머지.. { if (arr[i][j] > a) { cout << "\n"; return 0; } cout << arr[i][j] << "\t"; } cout << "\n"; } return 0; }