1. 求解星期。已知2021年11月14日为星期天,输入之前的任意一个年份的时间,
求解是星期几。
说明:输入是三个整数,第一个表示年份,第二个表示月份,第三个表示
日期,比如2020年11月5日为2020 11 5,之间以空格隔开;输入是对应英文单词,
是星期4,为Thursday,首字母大写,其余小写。提示,星期一到星期天对应
英文是Monday, Tuesday, Wendnesday, Thursday,Friday, Saturday和Sunday。
输入示例1:
2020 11 5
输出示例1:
Thursday
输入示例2:
2021 6 2
输出示例2:
Wendnesday
#include<stdio.h>
#include<string.h>
#include<math.h>
int main(){
int i,j;
int y,m,d;
int n;
int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int l0=2,ly=0,ld=0;//2022.1.2 n=0
scanf("%d %d %d",&y,&m,&d);
if((y%4==0&&y%100!=0)||y%400==0)
a[2]=29;
if(m>1)
{for(i=1;i<m;i++)
ld+=a[i];
}
ld+=d;
for(i=y;i<2022;i++)
{if((i%4==0&&i%100!=0)||i%400==0)
ly+=366;
else ly+=365;
}
n=ly+2-ld;
n%=7;
n=7-n;//重要!因为此前计算的n为与2022.1.2的差值,结果不是星期x
//星期x加上原来的n=7
//printf("%d",n);
switch(n){
case 1:printf("Monday");break;
case 2:printf("Tuesday");break;
case 3:printf("Wendnesday");break;
case 4:printf("Thursday");break;
case 5:printf("Friday");break;
case 6:printf("Saturday");break;
case 7:printf("Sunday");break;
}
return 0;
}