#include <iostream> #include <string> #include <iomanip> using namespace std; int run(int year); int rili(int start,int year,bool print=false); int main( ) { int start_year=1900; int start_xingqi=1; cout<<"请输入一个年份,(1900-11900年之后的都可以):"; int year; cin>>year; if(year<1900||year>11900) { cout<<"您输入的年份不在1900-11900之间/n"; return 0; } cout<<"/n=======================下面是"<<year<<"年的日历=========================/n/n"; for (int i=start_year;i<year;i++) { start_xingqi=rili(start_xingqi,++start_year); } rili(start_xingqi,year,1); system("pause"); return 0 ; } int run(int year) { if ((year%4==0 && year%100!=0)||year%400==0 ) { return 366; } else return 365; } int rili(int start,int year,bool print) { if(start>7) { return 0; } int temp=start; while(temp-->1 && print==true) { cout<<setw(3)<<" "; } int mon=1; int xingqi=start; for (int i=start,ri=1;i<run(year)+start;i++) { if (print==true) { cout<<setw(3)<<ri++; } xingqi++; if (i%7==0) { if(ri-8<=0 && print==true) { cout<<" ---"<<year<<"年,"<<mon<<"月份"; } if (print==true) { cout<<endl; } xingqi=1; } if (ri>31 && mon==1) { ri=1; mon++; } else if (ri>28 && mon==2 && run(year)==365) { ri=1; mon++; } else if(ri>29 && mon==2 && run(year)==366) { ri=1; mon++; } else if(ri>31 && mon==3) { ri=1; mon++; } else if(ri>30 && mon==4) { ri=1; mon++; } else if(ri>31 && mon==5) { ri=1; mon++; } else if(ri>30 && mon==6) { ri=1; mon++; } else if(ri>31 && mon==7) { ri=1; mon++; } else if(ri>31 && mon==8) { ri=1; mon++; } else if(ri>30 && mon==9) { ri=1; mon++; } else if(ri>31 && mon==10) { ri=1; mon++; } else if(ri>30 && mon==11) { ri=1; mon++; } else if(ri>31 && mon==12) { ri=1; mon++; } } if (print==true) { cout<<endl; } return xingqi; }