c语言中算每月第一天是周几的算法看不懂,请大神指教

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言中算每月第一天是周几的算法看不懂,请大神指教相关的知识,希望对你有一定的参考价值。

int firstday(int month,int year) //判断本月一日是周几

int w;
w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1;
return w;

这种算法是什么意思啊?

其实这个就是蔡勒公式,楼主可以找百度百科蔡勒公式,里面解释得很详细 参考技术A 这个其实并不是算法...而是一个经验总结公式...

C语言源代码——计算任何一天是星期几

代码写的不严谨。

网上也有很多计算任何一天是星期几的C语言源代码,不过,有些代码含有一点点小错误。像闰年的分辨啊,或者是每个月的天数,再或者星期的计算公式,都是比较细微的环节,出一点错误都有可能导致结果不正确。这一点,我都进行过验证。下面我选出的这组代码,结构清晰,语法明确。希望能给各位C的爱好者或者要考计算机二级的同学们一点点帮助!当然,有错误的话,也请各位指出!

代码如下:

 1 #include <stdio.h> 
 2 int main() 
 3 { 
 4 int day,mn,yr,i,days=0,s,k; 
 5 int mont[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; 
 6 char wek[][9]={ {S,u,n,d,a,y}, 
 7 {M,o,n,d,a,y}, 
 8 {T,u,e,s,d,a,y}, 
 9 {W,e,d,n,s,d,a,y}, 
10 {T,h,u,r,s,d,a,y}, 
11 {F,r,i,d,a,y}, 
12 {S,a,t,u,r,d,a,y} 
13       }; 
14 printf("Inpute the date (year-month-day):"); 
15 scanf("%d-%d-%d",&yr,&mn,&day); 
16 if (yr%4==0||yr%100==0||yr%400==0) 
17 mont[2]=29; 
18 else 
19 mont[2]=28; 
20 for (i=0;i<mn;i++) 
21 days+=mont[i]; 
22 days+=day; 
23 s=yr-1+(int)((yr-1)/4)-(int)((yr-1)/100)+(int)((yr-1)/400)+days; 
24 k=s%7; 
25 printf("%d-%d-%d is %s.",yr,mn,day,wek[k]); 
26    return 0; 
27 } 

 

以上是关于c语言中算每月第一天是周几的算法看不懂,请大神指教的主要内容,如果未能解决你的问题,请参考以下文章

c语言编写万年历时计算每月第一天是星期几的公式是啥

MySQL中如何获得指定日期中月份的第一天是周几?

php如何计算某一天是周几?

万年历小程序

判断某天是周几

oracle取每月第几周问题