1,根据下面的计算公式即可得知某年某月某日是星期几
s=x-1+[(x-1)/4]-[(x-1)/100]+[(x-1)/400]+c
x:公元年数,c:从这一年的元旦开始算到这天为止的天数(包括这天在内),式子中的方括号是取整运算。
2、求出s后,在用s对7取余数,即s%7,余数是0,则为星期天,为1是星期一,以此类推。
3、程序很大一部分在判断年份是闰年还是平年,主要区别在2月的天数。
程序很简单,适合练手:
/************************************************************************/
/*给定年月日,计算该日是星期几*/
/************************************************************************/
#include<stdio.h>
int main()
{
int a,b,c,d,s,z;
printf("请输入年月日xxxx,yy,zz:");
scanf("%d,%d,%d",&a,&b,&c);
if((a%4==0&&a%100!=0)||a%400==0)//闰年
{
if(b==1){d=c;}
if(b==2){d=c+31;}
if(b==3){d=c+60;}
if(b==4){d=c+91;}
if(b==5){d=c+121;}
if(b==6){d=c+152;}
if(b==7){d=c+182;}
if(b==8){d=c+213;}
if(b==9){d=c+244;}
if(b==10){d=c+274;}
if(b==11){d=c+305;}
if(b==12){d=c+335;}
}
else
{
if(b==1){d=c;}
if(b==2){d=c+31;}
if(b==3){d=c+59;}
if(b==4){d=c+90;}
if(b==5){d=c+120;}
if(b==6){d=c+151;}
if(b==7){d=c+181;}
if(b==8){d=c+212;}
if(b==9){d=c+243;}
if(b==10){d=c+273;}
if(b==11){d=c+304;}
if(b==12){d=c+334;}
}
s=a-1+(a-1)/4-(a-1)/100+(a-1)/400+d;
z=s%7;
if(z==0)printf("今天是星期天\n");
if(z==1)printf("今天是星期一\n");
if(z==2)printf("今天是星期二\n");
if(z==3)printf("今天是星期三\n");
if(z==4)printf("今天是星期四\n");
if(z==5)printf("今天是星期五\n");
if(z==6)printf("今天是星期六\n");
return 0;
}