最佳答案
引言
在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言語中打算日期對應的禮拜。這些方法不只簡單,並且正確,是處理日期成績的實用東西。