已知2021年1月1日是星期五,请用C语言设计程序计算输入的几月几日对应星期几?
我这里有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;
}