输入要查看的年份(要求为公元元年以后),就可以输出这一年每个月份的天数。
例如输入:2018
本程序为实现万年历的功能,请输入要查找的年份:
2018
一月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
二月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
三月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
四月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
五月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
六月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
七月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
八月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
九月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
十月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
十一月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
十二月
星期一 星期二 星期三 星期四 星期五 星期六 星期日
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
Process returned 0 (0x0) execution time : 4.786 s
Press any key to continue.
代码如下:
#include
#include
#include
using namespace std;
int Week(int day)
{
//这一年 1 月 1 日是星期几
int week = (day % 7) +1;
cout << "星期一\t星期二\t星期三\t星期四\t星期五\t星期六\t星期日" << endl;
for(int i = 0; i < week -1; i++){
cout << "\t";
}//打印第一天前面的空格
}
int main()
{
cout << "本程序为实现万年历的功能,请输入要查找的年份:" << endl;
int ye;
cin >> ye; //要查看的年份
int year = ye - 1;
//从公元元年 1 月 1 日到这一年 1 月 1 日一共的天数
int day = ((year / 4) - (year / 100) + (year / 400)) * 366 + (year - ((year / 4) - (year / 100) + (year / 400))) * 365;
int month1[31] = {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};
int month2b[28] = {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};
int month2a[29] = {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};
int month4[30] = {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};
int Jan = sizeof(month1) / sizeof(0);
int Feb;
int Apr = sizeof(month4) / sizeof(0);
//一月
cout << "一月" << endl;
Week(day);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//二月
int day1 = day + Jan; //二月之前的天数
if((day1 % 7) != 0)
cout << "\n";
cout << "二月" << endl;
Week(day1);
if((ye % 4 == 0 && ye % 100 != 0) || ye % 400 == 0){
for(int i = 0; i < sizeof(month2a) / sizeof(0); i++){
cout << month2a[i];
if(((day1 + month2a[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
Feb = sizeof(month2a) / sizeof(0);
}
else
{
for(int i = 0; i < sizeof(month2b) / sizeof(0); i++){
cout << month2b[i];
if(((day + Jan + month2b[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
Feb = sizeof(month2b) / sizeof(0);
}
//三月
int day2 = day + Jan + Feb;
if((day2 % 7) != 0)
cout << "\n";
cout << "三月" << endl;
Week(day2);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day2 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//四月
int day3 = day + Jan * 2 + Feb;
if((day3 % 7) != 0)
cout << "\n";
cout << "四月" << endl;
Week(day3);
for(int i = 0; i < sizeof(month4) / sizeof(0); i++){
cout << month1[i];
if(((day3 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//五月
int day4 = day + Jan * 2 + Feb + Apr;
if((day4 % 7) != 0)
cout << "\n";
cout << "五月" << endl;
Week(day4);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day4 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//六月
int day5 = day + Jan * 3 + Feb + Apr;
if((day5 % 7) != 0)
cout << "\n";
cout << "六月" << endl;
Week(day5);
for(int i = 0; i < sizeof(month4) / sizeof(0); i++){
cout << month1[i];
if(((day5 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//七月
int day6 = day + Jan * 3 + Feb + Apr * 2;
if((day6 % 7) != 0)
cout << "\n";
cout << "七月" << endl;
Week(day6);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day6 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//八月
int day7 = day + Jan * 4 + Feb + Apr * 2;
if((day7 % 7) != 0)
cout << "\n";
cout << "八月" << endl;
Week(day7);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day7 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//九月
int day8 = day + Jan * 5 + Feb + Apr * 2;
if((day8 % 7) != 0)
cout << "\n";
cout << "九月" << endl;
Week(day8);
for(int i = 0; i < sizeof(month4) / sizeof(0); i++){
cout << month1[i];
if(((day8 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//十月
int day9 = day + Jan * 5 + Feb + Apr * 3;
if((day9 % 7) != 0)
cout << "\n";
cout << "十月" << endl;
Week(day9);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day9 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//十一月
int day10 = day + Jan * 6 + Feb + Apr * 3;
if((day10 % 7) != 0)
cout << "\n";
cout << "十一月" << endl;
Week(day10);
for(int i = 0; i < sizeof(month4) / sizeof(0); i++){
cout << month1[i];
if(((day10 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
//十二月
int day11 = day + Jan * 6 + Feb + Apr * 4;
if((day11 % 7) != 0)
cout << "\n";
cout << "十二月" << endl;
Week(day11);
for(int i = 0; i < sizeof(month1) / sizeof(0); i++){
cout << month1[i];
if(((day11 + month1[i]) % 7) == 0)
cout << "\n";
else
cout << "\t";
}
}