#include<iostream>#include<iomanip>usingnamespace std;constint len =20;classdate{private:int year;int month;public:date(int y,int m):year{ y }, month{ m }{this->DispCalendar(y, m);}intDayNumofMonth(int y,int m){int monthmax=0;if(m ==1|| m ==3|| m ==5|| m ==7|| m ==8|| m ==10|| m ==12) monthmax =31;if(m ==4|| m ==6|| m ==9|| m ==11) monthmax =30;if(m ==2){if(y %4==0&& y %100!=0|| y %400==0)//闰年
monthmax =29;else//非闰年
monthmax =28;}return monthmax;}intDate(int y,int m,int d);voidDispCalendar(int y,int m){//标题模块
cout <<" 公元"<< y <<"年 第"<< m <<"月日历"<< endl;int a =1;for(a =0; a <7; a++)
cout <<setw(5)<< a;//setW用于设置空白位
cout << endl <<"====================================="<< endl;//日期模块int b =0, week;
week =this->Date(y, m,1);for(b =0; b < week; b++)
cout <<setw(5)<<" ";//每月一号对应的周几前面要有缩进int c =1, monthmax;
monthmax =this->DayNumofMonth(y, m);while(c <= monthmax){
cout <<setw(5)<< c;
c++;
week++;if(week %7==0)
cout << endl;}
cout << endl <<"====================================="<< endl;}~date(){
cout <<"Over!"<< endl;}};int date::Date(int y,int m,int d){int week;if(m ==1|| m ==2){
y = y -1;
m = m +12;}
week =(d +2* m +3*(m +1)/5+ y + y /4- y /100+ y /400+1)%7;return week;}intmain(){int y, m;
cout <<"请输入年份:";
cin >> y;
cout <<"请输入月份:";
cin >> m;
cout << endl;
date D(y, m);}