C语言 根据日期求星期
任意给出一个年月日,求出是星期几。
输入:
年 月 日
输出:
0~6。
星期日用 0 表示,星期一用 1 表示,星期二用 2 表示......星期六用 6 表示。
我写的代码:
#include<stdio.h>
int main()
{
int n,y,r,a,x,m,d,e;
scanf("%d %d %d",&n,&y,&r);
x=0;
m=0;
if(n%400==0 || n%100!=0 && n%4==0) {x+=1;m=1;
}
if(m=1)
switch(y)
{
case 1:a=(n-1900)*365+x+r-1;break;
case 2:a=(n-1900)*365+x+31+r-1;break;
case 3:a=(n-1900)*365+x+60+r-1;break;
case 4:a=(n-1900)*365+x+91+r-1;break;
case 5:a=(n-1900)*365+x+121+r-1;break;
case 6:a=(n-1900)*365+x+152+r-1;break;
case 7:a=(n-1900)*365+x+182+r-1;break;
case 8:a=(n-1900)*365+x+213+r-1;break;
case 9:a=(n-1900)*365+x+244+r-1;break;
case 10:a=(n-1900)*365+x+274+r-1;break;
case 11:a=(n-1900)*365+x+305+r-1;break;
case 12:a=(n-1900)*365+x+335+r-1;break;}
else
{
switch(y)
{
case 1:a=(n-1900)*365+x+r-1;break;
case 2:a=(n-1900)*365+x+31+r-1;break;
case 3:a=(n-1900)*365+x+59+r-1;break;
case 4:a=(n-1900)*365+x+90+r-1;break;
case 5:a=(n-1900)*365+x+120+r-1;break;
case 6:a=(n-1900)*365+x+151+r-1;break;
case 7:a=(n-1900)*365+x+181+r-1;break;
case 8:a=(n-1900)*365+x+212+r-1;break;
case 9:a=(n-1900)*365+x+243+r-1;break;
case 10:a=(n-1900)*365+x+273+r-1;break;
case 11:a=(n-1900)*365+x+304+r-1;break;
case 12:a=(n-1900)*365+x+334+r-1;break;}
}
d=a%7;
printf("%d",d);
return 0;
}
问题:最后 d=a%7;
printf("%d",d);
是我根据正确答案试出来的 但是我并不明白为什么星期直接等于总共的天数%7
求解