#include <stdio.h>
void main()
{
struct
{
int day;
int mon;
int year;
} date;
int m,n;
printf("输入年月日,以空格隔开(最后以Ctrl+Z结束):\n");
while(scanf("%d%d%d",&date.year,&date.mon,&date.day)!=EOF)
{
switch(date.mon)
{
case 1:n=date.day;break;
case 2:n=31+date.day;break;
case 3:n=31+28+date.day;break;
case 4:n=31+28+31+date.day;break;
case 5:n=31+28+31+30+date.day;break;
case 6:n=31+28+31+30+31+date.day;break;
case 7:n=31+28+31+30+31+30+date.day;break;
case 8:n=31+28+31+30+31+30+31+date.day;break;
case 9:n=31+28+31+30+31+30+31+31+date.day;break;
case 10:n=31+28+31+30+31+30+31+31+30+date.day;break;
case 11:n=31+28+31+30+31+30+31+31+30+31+date.day;break;
case 12:n=31+28+31+30+31+30+31+31+30+31+30+date.day;break;
default : break;
}
if ((date.year/4)*4==date.year&&date.mon>2)
{
if ((date.year/100)*100==date.year)
{
if ((date.year/400)*400==date.year)
{
n=n+1;
}
}
else
{
n=n+1;
}
}
printf("%d - %d - %d\t%d\t",date.year,date.mon,date.day,n);
if(date.mon==1||date.mon==2)//判断month是否为1或2
{
date.year--;
date.mon+=12;
}
int c=date.year/100;
int y=date.year-c*100;
int week=(c/4)-2*c+(y+y/4)+(13*(date.mon+1)/5)+date.day-1;
while(week<0){week+=7;}
week%=7;
switch(week)
{
case 1:printf("Monday\n");break;
case 2:printf("Tuesday\n");break;
case 3:printf("Wednesday\n");break;
case 4:printf("Thursday\n");break;
case 5:printf("Friday\n");break;
case 6:printf("Saturday\n");break;
case 0:printf("Sunday\n");break;
}
}
}
分析:…………