用c++解决:Zeller’s congruence is an algorithm developed by Christian Zeller to calculate the day of the week.
时间: 2024-09-26 17:17:59 浏览: 50
FB Calculate Day Of Week.rar
Zeller's Congruence是一个用于计算星期几的算法,它基于公元纪年法中的日期,由Christian Zeller在19世纪提出。在C++中,你可以使用这个公式来确定给定日期对应的星期。以下是Zeller's Congruence的基本步骤:
1. **输入处理**:获取年份(Y)、月份(M,注意1月和2月被视为上一年的13月和14月)和日期(D)。
2. **调整月份**:如果M是13或14(即对应于1月和2月),将M减去12,并把年份加1。
3. **计算q、k和h**:
- q = D
- k = (Y + floor(Y / 4) - floor(Y / 100) + floor(Y / 400)) % 7
- h = (13 * (M + 1) // 5) + q + k
4. **计算结果**:
- 如果h在0-6之间,对应的星期依次是周日到周六;如果是7,表示下周一,如果是8,表示上周日。
下面是一个简单的C++函数实现:
```cpp
#include <iostream>
using namespace std;
int zellers_congruence(int Y, int M, int D) {
if (M < 3) { // 如果是前3个月,需要调整月份
M += 12;
Y--;
}
int q = D, k = ((Y + Y / 4 - Y / 100 + Y / 400) % 7);
int h = (13 * (M + 1) / 5) + q + k;
if (h > 7)
h -= 7;
return h; // 返回从0到6,分别代表周日至周六
}
int main() {
int year, month, day;
cout << "请输入年月日(例如:2023 1 1): ";
cin >> year >> month >> day;
int weekday = zellers_congruence(year, month, day);
string days[] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
cout << "这一天是: " << days[weekday] << endl;
return 0;
}
```
阅读全文