c语言算某天使星期几,使用了蔡勒公式,可是2000年1月1日到2月29日这段时间的反馈结果都是错的,求解~

#include<stdio.h>intmain(){inty,m,d,c,w;/*y=year,d=day,m=month,c=century-1,w=week.*/p... #include <stdio.h>
int main ()
{
int y , m , d , c ,w ;

/*y=year, d=day, m=month, c=century-1, w=week. */

printf("请按照以下格式输入年月日:\n yyyy mm dd (y= year, m= month, d= day)\n\n");
scanf("%d %d %d", &y, &m, &d);

c = y /100;

if (m<=2)

{
y=y-1; m=m+12;
}

y = y % 100;

w = y + y / 4 + c / 4 -2 * c +(26 * (m+ 1) / 10)+ d - 1 ;

/*这里使用了蔡勒公式。*/
/*蔡勒(Zeller)公式,是一个计算星期的公式,随便给一个日期,就能用这个公式推算出那一天是星期几。*/

while(w<0)
w+=7;

w = w % 7;

switch(w)
{
case 1: printf("\nThis day is Monday\n\n"); break;
case 2: printf("\nThis day is Tuesday\n\n"); break;
case 3: printf("\nThis day is Wednesday\n\n"); break;
case 4: printf("\nThis day is Thursday\n\n"); break;
case 5: printf("\nThis day is Friday\n\n"); break;
case 6: printf("\nThis day is Saturday\n\n"); break;
case 0: printf("\nThis day is Sunday\n\n"); break;
}

}
展开
 我来答
临风_听海
2012-10-29
知道答主
回答量:7
采纳率:0%
帮助的人:8.6万
展开全部
你代表世纪的变量c计算语句错误,应写为c = y /100-1;

蔡勒(Zeller)公式:是一个计算星期的公式。
随便给一个日期,就能用这个公式推算出是星期几。
蔡勒公式如下:
W = [C/4] - 2C + y + [y/4] + [13 * (M+1) / 5] + d - 1
或者是:w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1
公式中的符号含义如下:
w:星期; w对7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四,5-星期五,6-星期六

c:世纪-1(前两位数)

y:年(后两位数)
m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算)
d:日
[ ]代表取整,即只要整数部分。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式