开篇
本篇文章依然是对于日期相关函数的实现。
问题概要
给定一个日期,返回为周几
思路分析
这个问题的思路只是对于Zeller公式的直接引用,不存在其他逻辑。公式详情可参考Zeller公式百科
代码实现
#include <stdio.h>
// 根据Zeller公式计算
int dayOfWeek(day, month, year) {
if (month < 3) {
month += 12;
year -= 1;
}
int K = year % 100;
int J = year / 100;
int h = (day + (13 * (month + 1) / 5) + K + (K / 4) + (J / 4) + (5 * J)) % 7;
return h;
}
int main() {
int day, month, year;
printf("输入一个日期(日 月 年): ");
scanf_s("%d %d %d", &day, &month, &year);
int weekday = dayOfWeek(day, month, year);
printf("%d\n", weekday);
weekday = (weekday + 6) % 7;
const char* weekdays[] = {
"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"
};
printf("这一天是 %s\n", weekdays[weekday]);
return 0;
}
注
希望本文能对您有所帮助。
感谢阅读!