题头的话:长按点赞可私我赠送50+本C与C++书籍电子书资源
计算星期
【问题描述】
任意输入一个日期,求这一天是星期几。
例如:1980年1月1日是星期二。
【输入形式】
从键盘输入一行字符串“Y-M-D”,表示一个有效的公历日期。其中Y为年(范围为1980—3000年),M为月,D为天,都不带有前缀0。
提示:输入语句格式为scanf("%d-%d-%d",&year,&month,&day);
【输出形式】
输出只有一行,是代表星期的字符串。对于星期一至星期日,分别输出Monday、Tuesday、Wednesday、Thursday、Friday、Saturday、Sunday。输出结束不换行。判断闰年的算法是:年份能被4整除并且不能被100整除,或者能被400整除。
【样例输入】
2004-1-6
【样例输出】
Tuesday
#include <stdio.h>
int main()
{
int i,x=0,y,m,d;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
scanf("%d-%d-%d",&y,&m,&d);
for(i=1980;i<y;i++)
if((i%4==0&&i%100!=0)||i%400==0)
x=x+2;
else x++;
if((y%4==0&&y%100!=0)||y%400==0)
a[1]=29;
for(i=1;i<m;i++)
x+=a[i];
x=(x+d)%7;
switch(x)
{
case 0:printf("Monday");break;
case 1:printf("Tuesday");break;
case 2:printf("Wednesday");break;
case 3:printf("Thursday");break;
case 4:printf("Friday");break;
case 5:printf("Saturday");break;
case 6:printf("Sunday");break;
}
return 0;
}