公元万年历
题目来源:http://116.56.140.75:8000/JudgeOnline/problem.php?id=1712
1712: 公历万年历
时间限制: 1 Sec 内存限制: 64 MB题目描述
日历在于我们的日常生活中安排工作、活动等场合经常要用到。在Windows操作系统中也自带有此功能。双击任务栏中时间或者从“开始→控制面板→时间日期"打开时间日期属性窗口。
Windows XP中如下图:
Windows 7中如下图:
你可以先体验一下它的万年历功能。你也可以编一个公历的万年历,试试看,其实也不难啦,关键是要细心,要充分测试。
输入
第一个正整数表示测试用例的个数。对于每一个测试用例,给定年份和月份都是正整数。每个给定的年月都是公元后。
输出
对每个测试用例分别请按照示例输出当前月份的日历信息。其中每列占用4个字符位置,不足4个字符的用空格补齐,并且向左对齐。每个测试用例之间用一个空行隔开。周日至周五分别用英文的前3个字母表示,即Sun,Mon,Tue,Wed,Thu,Fri,Sat
样例输入
3
1981 2
1986 2
2009 12
样例输出
year:1981 month:2
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
year:1986 month:2
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
year:2009 month:12
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
提示
注意空格的多少的使用!
解析:就是对日期的处理咯,还有注意空格的使用
代码:
#include<iostream> #include<iomanip> using namespace std; bool check(int y) { if (y % 100 == 0) { if (y % 400 == 0) return 1; else return 0; } else { if (y % 4 == 0) return 1; else return 0; } } int main() { int mon[20] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 }; int t; cin >> t; int y, m; while (t--) { cin >> y >> m; cout << "year:" << y << " month:" << m << endl; cout << "Sun Mon Tue Wed Thu Fri Sat\n"; if (check(y)) mon[2] = 29; int sum = 0; for (int i = 1; i<y; i++) { if (check(i)) sum += 366; else sum += 365; } for (int i = 1; i<m; i++) sum += mon[i]; sum += 1; int flag = sum % 7, sum1 = 0; switch (flag) { case 0: cout << "1 "; sum1 = 1; break; case 1: cout << " 1 "; sum1 = 2; break; case 2: cout << " 1 "; sum1 = 3; break; case 3: cout << " 1 "; sum1 = 4; break; case 4: cout << " 1 "; sum1 = 5; break; case 5: cout << " 1 "; sum1 = 6; break; case 6: cout << " 1 "; sum1 = 7; break; } for (int k = 2; k <= mon[m]; k++) { if (sum1 % 7 == 0) cout << endl; sum1++; cout << left << setw(4) << k; } cout << "\n\n"; } return 0; } /************************************************************** Problem: 1712 User: 201730685257 Language: C++ Result: 正确 Time:0 ms Memory:1484 kb ****************************************************************/