【揭秘C语言星期计算的奥秘】轻松掌握日期转星期的编程技巧

日期:

最佳答案

引言

在C言语编程中,日期的处理是一个罕见的任务。懂得怎样打算一个特定日期是礼拜多少,对很多利用顺序来说是一个基本须要。本文将具体介绍如何在C言语中利用蔡勒公式(Zeller’s Congruence)跟基姆拉尔森打算公式(Kimmel’s Formula)来打算日期对应的礼拜。

蔡勒公式

道理

蔡勒公式是一种打算礼拜多少的算法,由德国数学家蔡勒发明。该公式实用于公历日期,并且可能打算出恣意日期的礼拜多少。其公式如下:

h = (q + [13(m+1)/5] + K + [K/4] + [J/4] - 2J) mod 7

其中:

实现代码

#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

其中:

实现代码

#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言语中打算日期对应的礼拜。这些方法不只简单,并且正确,是处理日期成绩的实用东西。