题目来源: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
****************************************************************/