首页 > 代码库 > 24:打印月历
24:打印月历
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<iostream> 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"<<endl; 29 for(int i=1;i<=dow;i++) 30 { 31 if(dow==7)break; 32 bj++; 33 for(int i=1;i<=3;i++) 34 cout<<" "; 35 cout<<" "; 36 }//确定第一个数的位置 37 for(int k=1;k<=rmonth[j];k++) 38 { 39 if(k<10) 40 { 41 if(bj!=6&&k!=rmonth[j]) 42 cout<<" "<<k<<" "; 43 else 44 { 45 cout<<" "<<k; 46 } 47 bj++; 48 if(bj==7) 49 { 50 cout<<endl; 51 bj=0; 52 } 53 } 54 else 55 { 56 if(bj!=6&&k!=rmonth[j]) 57 cout<<" "<<k<<" "; 58 else 59 { 60 cout<<" "<<k; 61 } 62 if(k==rmonth[j])return 0; 63 bj++; 64 if(bj==7) 65 { 66 cout<<endl; 67 bj=0; 68 } 69 } 70 } 71 return 0; 72 }//边界条件 73 dow++; 74 if(dow==8) 75 dow=1; 76 77 } 78 79 } 80 }//闰年 81 else 82 { 83 for(int j=1;j<=12;j++) 84 { 85 for(int k=1;k<=month[j];k++) 86 { 87 if(i==enyear&&j==enmonth) 88 { 89 int bj=0; 90 cout<<"Sun Mon Tue Wed Thu Fri Sat"<<endl; 91 for(int i=0;i<=dow-1;i++) 92 { 93 if(dow==7)break; 94 if(bj==6)break; 95 bj++; 96 for(int i=1;i<=3;i++) 97 cout<<" "; 98 cout<<" "; 99 }//确定第一个数的位置 100 for(int k=1;k<=month[j];k++)101 {102 if(k<10)103 {104 if(bj!=6&&k!=month[j])105 cout<<" "<<k<<" ";106 else107 {108 cout<<" "<<k;109 }110 bj++;111 if(bj==7)112 {113 cout<<endl;114 bj=0; 115 }116 }117 else118 {119 if(bj!=6&&k!=month[j])120 cout<<" "<<k<<" ";121 else122 {123 cout<<" "<<k;124 }125 bj++;126 if(bj==7)127 {128 cout<<endl;129 bj=0; 130 }131 if(k==month[j])return 0;132 }133 }134 return 0;135 }//边界条件 136 dow++;137 if(dow==8)138 dow=1;139 } 140 141 142 143 144 }145 146 }147 }148 }
24:打印月历
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。