c语言的高手,进来帮帮忙!

来源:百度知道 编辑:UC知道 时间:2024/06/22 03:16:54
我要写一个程序,输入年月日,要输出星期几的!
公式w=y+[y/4]+[c/4]-2c+[26(m+1)/10]+d-1;
w:星期;c:世纪-1;y:年(两位数);m:月(m大于等于3,小于等于14,即在蔡勒公式中,某年的1、2月要看作上一年的13、14月来计算,比如2003年1月1日要看作2002年的13月1日来计算);d:日;[ ]代表取整,即只要整数部分。(C是世纪数减一,y是年份后两位,M是月份,d是日数。1月和2月要按上一年的13月和 14月来算,这时C和y均按上一年取值。)

//经过测试~OK~哈哈,100到手

#include<stdio.h>

void main()
{
char week[7][3] = {{"日"},{"一"},{"二"},{"三"},{"四"},{"五"},{"六"}};
int year,month,day,y,c,m,d,w;
printf("请输入年月日:(如2009.2.8)");
scanf("%d.%d.%d",&year,&month,&day);
c = year /100;
y = year %100;
m = month;
if( (m==1||m==2) && (y == 0))
{
m = m + 12;
y = 99;
c--;
}
else if((m==1||m==2) && (y != 0))
{
m = m + 12;
y--;
}
d = day;
w=y+(int)(y/4)+(int)(c/4)-2*c+(int)(26*(m+1)/10)+d-1;
printf("这天是星期%s\n",week[w%7]);

}

楼上错了,比如2006-04-04就不行。100分不是那么好拿的。

下面给出正解:
main() {
int w,c,y,m,d;char *s[7]={"Mon","Tue","Wed","Thu","Fri","Sta","Sun"};
printf("Please input yyy