菜勒公式,通过日期求周几

 1 #include<stdio.h>
 2 int Change(int year,int month,int day)//根据日期判断出星期几
 3   {
 4     if(month==1||month==2)//所求月份为1月或2月,应视为前一年的13月或14月; 
 5     {
 6         month+=12;
 7         year--;
 8     }
 9     int c=year/100;//c为公元年份的前两位数字
10     int y=year%100;//c为公元年份的后两位数字
11     int m=month;//m为月份 
12     int d=day;//d为天数 
13     int W=c/4-2*c+y+y/4+26*(m+1)/10+d-1;
14     if(W<0)  //若所求数字小于7,直接加上7的倍数,直到结果大于0小于7为止。 
15     return (W+(-W/7+1)*7)%7;
16     return W%7;//若所求数字大于7,可直接对7取余,周日输出为0 
17   }
18 int main()
19 {
20    int y,m,d;
21    while(scanf("%d %d %d",&y,&m,&d)!=EOF)
22    {
23          int ans=Change(y,m,d);
24          printf("%d\n",ans);
25    }
26 }
View Code

 

posted @ 2020-10-29 23:29  古比  阅读(161)  评论(0编辑  收藏  举报