效果

代码
#include <iostream>
#include <iomanip>
using namespace std;
bool isLeapYear(int year);
int getTotalNumberOfDays(int year,int month);
int getNumberOfDaysInMonth(int year,int month);
int getStartDay(int year,int month);
void printMonthHead(int year,int month);
void printMonthBody(int year,int month);
int main()
{
int year,month;
cout<<"put your year and month so we can give you calendar!"<<endl;
cin>>year>>month;
cout<<endl;
cout<<endl;
printMonthHead(year,month);
printMonthBody(year,month);
cout<<endl;
cout<<endl;
return 0;
}
bool isLeapYear(int year){
if(year%4==0&&year%100!=0 || year%400==0);
return 1;
}
int getNumberOfDaysInMonth(int year,int month){
if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)
return 31;
if(month==4||month==6||month==9||month==11)
return 30;
if(month==2)
return isLeapYear(year)? 29:28;
return 0;
}
int getTotalNumberOfDays(int year,int month){
int total=0;
for(int i=1800;i<year;i++){
if(isLeapYear(i))
total = total+ 366;
else
total = total+ 365;
}
for(int i=1;i<month;i++)
total = total + getNumberOfDaysInMonth(year,i);
return total;
}
int getStartDay(int year,int month){
int TotalDays = getTotalNumberOfDays(year,month);
int start1800 = 3;
return (start1800 + TotalDays )%7;
}
void printMonthBody(int year,int month){
int StartDay = getStartDay(year,month);
int MonthDays = getNumberOfDaysInMonth(year,month);
for(int i=0;i<=StartDay;i++){
cout<<" ";
}
int j=StartDay+1;
for(int i=1;i<= MonthDays;i++){
cout<<setw(5)<<i;
j++;
if(j==7){
cout<<endl;
j=0;
}
}
}
void printMonthHead(int year,int month){
string charMonth;
switch(month){
case 1:
charMonth="January";
break;
case 2:
charMonth="February";
break;
case 3:
charMonth="March";
break;
case 4:
charMonth="April";
break;
case 5:
charMonth="May";
break;
case 6:
charMonth="June";
break;
case 7:
charMonth="July";
break;
case 8:
charMonth="August";
break;
case 9:
charMonth="September";
break;
case 10:
charMonth="October";
break;
case 11:
charMonth="November";
break;
case 12:
charMonth="December";
break;
}
cout<<" "<<charMonth<<" "<<year<<endl;
cout<<"-------------------------------------"<<endl;
cout<<" SUN MON TUE WED THU FRI SAT "<<endl;
}