C语言设计程序解决日期对应星期几

已知2021年1月1日是星期五,请用C语言设计程序计算输入的几月几日对应星期几?

img

利用蔡勒(Zeller)公式计算星期

我这里有fortran代码

        !***************************************************
        ! 利用蔡勒(Zeller)公式计算星期
        !***************************************************
        elemental function Week(year, month, day)
            implicit none
            integer(Kind4), intent(in) :: year, month, day
            integer(Kind4) week, c
            integer(Kind4) y, m

            y = year; m = month
            !每年1、2月当做上一年的13、14月处理
            if(m < 3) then
                y = y-1; m = m+12
            end if
            c = int(y/100); y = mod(y,100); m = (m+1)*13
            y = y + day - 1 - (c+c) + int(c/4) + int(y/4) + int(m/5)
            week = mod(y,7)
            !防止取余结果为负数
            if(week < 0) week = week + 7
        end function Week

c代码

#include<stdio.h>
int week(int y, int m, int d)
{
int c;
if(m<3){
y -= 1;
m += 12;
}
c = y/100;
y %= 100;
m = (m+1)*13;
y = y+d-1-c*2+c/4+y/4+m/5;
y %= 7;
if(y<0) y += 7;
return y;
}

int main()
{
int n;
n = week(2021,1,1);
printf("%d\n",n);
return 0;
}