蔡勒公式有问题

zhouyumengdie 2016-06-17 03:32:05
这是我写的一篇关于计算星期几的C语言程序,但在计算(1945 8 15 星期三)(2001 7 12 星期四)等多个日期时出问题了
#include<stdio.h>
int main()
{
int year,month,day,ty,m,y,c,d,weeks;
scanf("%d%d%d",&year,&month,&day);
y=year;
m=month;
if(m<3)
{
m=12+m;
ty--;
}
y=ty%100;
c=ty/100;
d=day;
weeks=(y+y/4+c/4-2*c+(26*(m+1))/10+d-1)%7;
printf("%d\n",weeks);
}
...全文
242 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhouyumengdie 2016-06-17
  • 打赏
  • 举报
回复
计算某一天星期几的几个公式 蔡勒公式:W = ([C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1) mod 7. 吉姆拉尔森公式:W =((Y-1)+[(Y-1)/4]-[(Y-1)/100]+[(Y-1)/400]+[13*(M+1)/5 ]+d) mod 7. 蔡农公式:W = (C%4*5+Y+Y/4+(13*M+8)/5+D)%7
小灸舞 版主 2016-06-17
  • 打赏
  • 举报
回复
y=year;改成ty=year;试试

#include<stdio.h>
int main()
{
int year,month,day,ty,m,y,c,d,weeks;
scanf("%d%d%d",&year,&month,&day);
ty=year;
m=month;
if(m<3)
{
m=12+m;
ty--;
}
y=ty%100;
c=ty/100;
d=day;
weeks=(y+y/4+c/4-2*c+(26*(m+1))/10+d-1)%7;
printf("%d\n",weeks);
}

zhouyumengdie 2016-06-17
  • 打赏
  • 举报
回复
蔡勒公式
公式中的符号含义如下:
w:星期(计算所得的数值对应的星期:0-星期日;1-星期一;2-星期二;3-星期三;4-星期四;5-星期五;6-星期六)[1]
c:年份前两位数
y:年份后两位数
m:月(m的取值范围为3至14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]:称作高斯符号,代表向下取整,即,取不大于原数的最大整数。
mod:同余(这里代表括号里的答案除以7后的余数)

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧