在C言语编程中,日期的处理是一个罕见的任务。懂得怎样打算一个特定日期是礼拜多少,对很多利用顺序来说是一个基本须要。本文将具体介绍如何在C言语中利用蔡勒公式(Zeller’s Congruence)跟基姆拉尔森打算公式(Kimmel’s Formula)来打算日期对应的礼拜。
蔡勒公式是一种打算礼拜多少的算法,由德国数学家蔡勒发明。该公式实用于公历日期,并且可能打算出恣意日期的礼拜多少。其公式如下:
h = (q + [13(m+1)/5] + K + [K/4] + [J/4] - 2J) mod 7
其中:
h
是礼拜多少的成果,0表示礼拜六,1表示礼拜日,以此类推。m
是月份(3表示三月,4表示四月,…,12表示十二月,1表示上一年的一月,2表示上一年的二月)。q
是日期。K
是年份的后两位。J
是年份的前两位。#include <stdio.h>
int calculateDayOfWeek(int day, int month, int 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 - 2 * J) % 7;
return h;
}
int main() {
int day, month, year;
printf("请输入日期(格局:DD MM YYYY):");
scanf("%d %d %d", &day, &month, &year);
int dayOfWeek = calculateDayOfWeek(day, month, year);
printf("礼拜%d\n", dayOfWeek);
return 0;
}
基姆拉尔森打算公式是一种打算礼拜多少的算法,其公式如下:
W = (d + 2m3(m1)/5yy/4 - y/100y/400) % 7
其中:
W
是礼拜多少的成果。d
是日期中的日数。m
是月份数。y
是年纪。#include <stdio.h>
int calculateDayOfWeekKimmel(int day, int month, int year) {
int m1 = month;
if (month == 1 || month == 2) {
m1 += 12;
}
int y = year;
if (month == 1 || month == 2) {
y--;
}
int W = (day + 2 * m1 * 3 / 5 + y * y / 4 - y / 100 * y / 400) % 7;
return W;
}
int main() {
int day, month, year;
printf("请输入日期(格局:DD MM YYYY):");
scanf("%d %d %d", &day, &month, &year);
int dayOfWeek = calculateDayOfWeekKimmel(day, month, year);
printf("礼拜%d\n", dayOfWeek);
return 0;
}
经由过程以上两种方法,我们可能轻松地在C言语中打算日期对应的礼拜。这些方法不只简单,并且正确,是处理日期成绩的实用东西。