-
Notifications
You must be signed in to change notification settings - Fork 1
/
4-b2.cpp
128 lines (128 loc) · 2.24 KB
/
4-b2.cpp
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
/*1953609 软件 王灏廷*/
#include <iostream>
#include <iomanip>
#include<cmath>
using namespace std;
int zeller(int y, int m, int d)
{
int week,century;
int w;
if (m < 3)
{
m += 12;
y -= 1;
}
century = y / 100;
y = y % 100;
week = y + y / 4 + century / 4 - 2 * century +(13 * (m + 1) / 5) + d - 1;
while (week < 0)
week += 7;
w = week % 7;
return w;
}
int main()
{
int week, year, month,day;
while (1)
{
cout << "请输入年[1900-2100]、月、日:"<<endl;
cin >> year >> month >> day;
if (!cin.good())
{
while (getchar() != '\n')
;
cin.clear();
cout << "输入错误,请重新输入" << endl;
continue;
}
if (year<1900||year> 2100)
{
while (getchar() != '\n')
;
cin.clear();
cout << "年份不正确,请重新输入" << endl;
continue;
}
if (month < 1 || month>12)
{
while (getchar() != '\n')
;
cin.clear();
cout << "月份不正确,请重新输入" << endl;
continue;
}
if (month == 1 || month == 3 || month == 5 || month == 7 || month == 8 || month == 10 || month == 12)
{
if (day < 1 || day>31)
{
while (getchar() != '\n')
;
cin.clear();
cout << "日不正确,请重新输入" << endl;
continue;
}
}
else if (month == 4 || month == 6 || month == 9 || month == 11)
{
if (day < 1 || day>30)
{
while (getchar() != '\n')
;
cin.clear();
cout << "日不正确,请重新输入" << endl;
continue;
}
}
else if (month == 2)
{
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
{
if (day < 1 || day>29)
{
while (getchar() != '\n')
;
cin.clear();
cout << "日不正确,请重新输入" << endl;
continue;
}
}
else if (day < 1 || day>28)
{
while (getchar() != '\n')
;
cin.clear();
cout << "日不正确,请重新输入" << endl;
continue;
}
}
week=zeller(year, month, day);
switch (week)
{
case 0:
cout << "星期日" << endl;
break;
case 1:
cout << "星期一" << endl;
break;
case 2:
cout << "星期二" << endl;
break;
case 3:
cout << "星期三" << endl;
break;
case 4:
cout << "星期四" << endl;
break;
case 5:
cout << "星期五" << endl;
break;
case 6:
cout << "星期六" << endl;
break;
default:
break;
}
break;
}
return 0;
}