/*星期几计算,
使用基姆拉尔森计算公式
Week=(Day + 2*Month + 3*(Month+1)/5 + Year + Year/4 - Year/100 + Year/400) % 7
*/
int main(int argc, char const *argv[])
{
int y,m,d;
int r;
int ok;
scanf("%d%d%d",&y,&m,&d);
//判断是否是闰年,4年一润,100年不润,400又润
if((y%4==0&&y%100!=0)||y%400==0){
r=1;
}else{
r=0;
}
//判断输入是否有效
if((m==1||m==3||m==5||m==7||m==8||m==10||m==12) && (d>=1 && d<=31)){
ok = 1;
}else if((r==1 && m==2) && (d>=1 && d<=29)){
ok = 1;
}else if((r==0 && m==2) && (d>=1 && d<=28)){
ok = 1;
}else if((m==2||m==4||m==6||m==9||m==11) && (d>=1 && d<=30)){
ok = 1;
}
else{
printf("%s\n","Incorrect input data");
}
//判断是星期几
if(ok==1){
//一月、二月要当作上一年的十三、十四月来参与计算
if(m==1||m==2){
y--;
m+=12;
}
int w =(d+1+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;
if(w == 0)
printf("Sunday\n");
if(w == 1)
printf("Monday\n");
if(w == 2)
printf("Tuesday\n");
if(w == 3)
printf("Wednesday\n");
if(w == 4)
printf("Thursday\n");
if(w == 5)
printf("Friday\n");
if(w == 6)
printf("Saturday\n");
}
return 0;
}
星期几计算问题
原创
©著作权归作者所有:来自51CTO博客作者fanxinglanyu的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
星期几
今天下午弄了就弄了一个日历,有时候真的要放弃,坚持下去得不到还是得不到,还不如
日历 星期几 i++ ios 代码区