#include<iostream>
#include<iomanip>
using namespace std;
void printmonth(int year, int month);
void printmonthtitle(int year, int
month);
void printmonthname(int month);
void printmonthbody(int year, int
int getstartday(int year, int month);
int gettotalnumberofdays(int
year, int month);
int getnumberofdaysinmonth(int year, int month);
bool
isleapyear(int year);
int main() {
cout << "enter full year (e.g., 2001) : ";
int
year;
cin >> year;
cout << "enter month in number
between 1 and 12 : ";
int month;
cin >>
month;
printmonth(year, month);
return 0;
}
void printmonth(int year, int month) {
printmonthtitle(year,
printmonthbody(year, month);
void printmonthtitle(int year, int month)
{
printmonthname(month);
cout << " " << year <<
endl;
cout << "----------------------------" <<
cout << " sun mon tus wed thu fri sat" << endl;
void printmonthname(int month) {
switch(month) {
case 1: cout
<< setw(16) << "junuary"; break;
case 2: cout <<
setw(16) << "february"; break;
case 3: cout << setw(16)
<< "march"; break;
case 4: cout << setw(16) << "april";
break;
case 5: cout << setw(16) << "may"; break;
case
6: cout << setw(16) << "june"; break;
case 7: cout <<
setw(16) << "july"; break;
case 8: cout << setw(16) <<
"august"; break;
case 9: cout << setw(16) << "september";
case 10: cout << setw(16) << "october";
case 11: cout << setw(16) << "november";
case 12: cout << setw(16) <<
"december";
}
void printmonthbody(int year, int month) {
int startday =
getstartday(year, month);
int numberofdaysinmonth =
getnumberofdaysinmonth(year, month);
for (int i = 0; i < startday; i++)
cout << " ";
for (int i = 1; i <=
numberofdaysinmonth; i++) {
cout << setw(4) << i;
if
((i+startday) % 7 == 0) cout << endl;
int getstartday(int year, int month) {
int startday1800 = 3;
totalnumberofdays = gettotalnumberofdays(year, month);
return
(totalnumberofdays + startday1800) % 7;
int gettotalnumberofdays(int year, int month) {
int total =
0;
for (int i = 1800; i < year; i++) {
if (isleapyear(i)) total
+= 366;
else total += 365;
for (int i = 1; i < month;
i++) {
total += getnumberofdaysinmonth(year, i);
total;
int getnumberofdaysinmonth(int year, int month) {
if (month == 4 ||
month == 6 || month == 9 || month == 11) return 30;
if (month == 2) return
isleapyear(year) ? 29 : 28;
else return 31;
bool isleapyear(int year) {
return year%4 == 0 && year%100 != 0
|| year %400 == 0;