每四年有一次闰年 所以可以把一年看作365.25天,满四年就多出一天(2月29日)
计算完成后直接去掉小数部分即可
#includeusing namespace std; //标记日期 1949 10 1 //中华人民共和国成立 当天是周六 int mday(int,int); int main() { int y,fly1949,flyday,w; fly1949 = 1948*(365.25) + 274; cin >> y; for(int m=1;m<=12;++m){ flyday = (y-1)*(365.25) + 1; for(int i=1;i<=m-1;++i){ flyday += mday(y,i); } w = (flyday - fly1949)%7 + 6; w = w>7?w-7:w; cout << "---------------" << m << "月---------------" << endl; cout << "Mon. Tues. Wed. Thur. Fri. Sat. Sun." << endl; for(int i=1;i<=w-1;++i){ cout << " "; } for(int i=1;i<=mday(y,m);++i){ printf("%2d ",i); if((i-8+w)%7 == 0){ cout << endl; } } cout << endl << endl; } return 0; } int mday(int y,int m) { //根据月份判断天数 switch(m){ case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; case 4: case 6: case 9: case 11: return 30; case 2: if(y%4==0 && y%100!=0 || y%400==0){ return 29; }else{ return 28; } } return 0; }
运行后输入2022 运行结果如下:
---------------1月---------------
Mon. Tues. Wed. Thur. Fri. Sat. Sun.
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
........
---------------12月---------------
Mon. Tues. Wed. Thur. Fri. Sat. Sun.
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
暑期编程PK赛
得CSDN机械键盘等精美礼品!


