24:打印月历
- 总时间限制:
- 1000ms 内存限制:
- 65536kB
- 描述
-
给定年月,打印当月的月历表。
输入 - 输入为一行两个整数,第一个整数是年份year(1900 ≤ year ≤ 2099),第二个整数是月份month(1 ≤ month ≤ 12),中间用单个空格隔开。 输出
- 输出为月历表。月历表第一行为星期表头,如下所示: Sun Mon Tue Wed Thu Fri Sat 其余各行一次是当月各天的日期,从1日开始到31日(30日或28日)。 日期数字应于星期表头右对齐,即各位数与星期表头相应缩写的最后一个字母对齐。日期中间用空格分隔出空白。 样例输入
-
2006 5
样例输出 -
Sun Mon Tue Wed Thu Fri Sat 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
提示 - 闰年判断方法:能被4整除但不能被100整除,或者能被400整除。 1900年1月1日是周一。
-
1 #include
2 using namespace std; 3 int bgyear,bgmonth,bgday; 4 int enyear,enmonth,enday; 5 int month[21]={ 0,31,28,31,30,31,30,31,31,30,31,30,31};//非闰年 6 int rmonth[21]={ 0,31,29,31,30,31,30,31,31,30,31,30,31};//闰年 7 int flag=1; 8 int tot=0; 9 int dow=1; 10 string week[8]={ "Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"}; 11 int main() 12 { 13 cin>>enyear>>enmonth; 14 bgyear=1900; 15 bgmonth=1; 16 bgday=1; 17 for(int i=1900;i<=enyear;i++)//寻找年数上的差异 18 { 19 if((i%4==0&&i%100!=0)||(i%400==0)) 20 { 21 for(int j=1;j<=12;j++) 22 { 23 for(int k=1;k<=rmonth[j];k++) 24 { 25 if(i==enyear&&j==enmonth) 26 { 27 int bj=0; 28 cout<<"Sun Mon Tue Wed Thu Fri Sat"<