//打印日历实现输出某年某月 #include<iostream> #include<iomanip> #include<string> using namespace std; //判断平闰年 int doyear(int year) { if((year%4==0)&&(year%100!=0)||(year%400==0)) return 1; else return 0; } //判断某年的第一天是星期几 int doweek(int year) { int days=(year-1)*365+(year-1)/4-(year-100)/100+(year-1)/400; return days%7; } //打印星期 void printweek() { int i;//计数 string week[7]={"Sun","Mon","Tue","Wed","Thu","Fri","Sat"}; for(i=0;i<7;i++) cout<<setw(5)<<week[i]; cout<<endl; } //打印月份 void printmonth(int m) { //int i; string month[12]={"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dev"}; //for(i=0;i<12;i++) //if(m=i+1) cout<<setw(5)<<month[m-1]; cout<<endl; } //打印日历 void printall(int year,int month) { int i,d; int monthday[12]={31,28,31,30,31,30,31,31,30,31,30,31}; if(doyear(year)) monthday[1]=29; int sum=0; for(i=0;i<month-1;i++) sum+=monthday[i]; int weekday=((doweek(year)+sum)%7); cout<<setw(5)<<year<<" "<<month<<"月"<<endl<<endl; cout<<setw(5)<<"Calendar"; cout<<setw(20)<<year<<"-"<<month<<endl; for(i=1;i<=5*7;i++) cout<<"*"; cout<<endl; printmonth(month); printweek(); for(d=1;d<=monthday[month-1];d++) { if(d==1){ for(i=1;i<=weekday;i++) cout<<setw(5)<<" "; cout<<setw(5)<<d; } else cout<<setw(5)<<d; if((weekday+d-1)%7==6) cout<<endl; } } //主函数 int main() { int year,month; cout<<"please input which year do you want"<<endl; cin>>year; cout<<"please input which month do you want"<<endl; cin>>month; printall(year,month); cout<<endl; return 0; }