计算某年某日是星期几

[复制链接]
查看11 | 回复1 | 2008-11-10 17:01:24 | 显示全部楼层 |阅读模式
总是少一天
#include
int leap_year(int y)
{
if((y%4==0&&y%100!=0)||(y%400==0))return 1;
else return 0;
}
int month_days(int m,int ly)
{
int a;
switch(m)
{
case 1:case 3:case 5:case 7:case 8:case 10:case 12:a=31;break;
case 4:case 6:case 9:case 11:a=30;break;
case 2:{if(!ly){a=28;break;}else {a=29;break;}}
}
return a;
}
int A_days(int m,int d,int ly)
{
int total=0,i;
for(i=1;i<m;i++)total+=month_days(i,ly);
total+=d;
return total;
}
int B_days(int y)
{
int total=0,i,ly;
for(i=1;i<y;i++)
{
ly=leap_year(i);
if(ly)total+=366;
else total+=365;
}
return total;
}
void final(int d)
{
d=d%7;
switch(d)
{
case 0:printf("saturday");break;
case 1:printf("sunday");break;
case 2:printf("monday");break;
case 3:printf("tuesday");break;
case 4:printf("wensday");break;
case 5:printf("thusday");break;
case 6:printf("friday");break;
}
printf("\n");
}
main()
{

int days,month,year,leapyear,adays,bdays,totaldays;
scanf("%d,%d,%d",&year,&month,&days);
leapyear=leap_year(year);
adays=A_days(month,days,leapyear);
bdays=B_days(year);
totaldays=adays+bdays;
final(totaldays);
}
已知公元1月1日是星期天,请问哪错了

回复

使用道具 举报

千问 | 2008-11-10 17:01:24 | 显示全部楼层
final()函数中出错了(d%7==0时应该是周日,而不是周六!)修改如下:void final(int d){d=d%7;switch(d){case 0:printf("sunday");break;/*注意这里*/case 1:printf("monday");break;case 2:printf("tuesday");break;case 3:printf("wensday");break;case 4:printf("thusday");break;case 5:printf("friday");break;case 6:printf("saturday");break;}...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行