#include<stdio.h>
int main(void)
{
int a,b,c,f,i,m,n;
int sum=0;
int s=0;
int d[12]={31,29,31,30,31,30,31,31,30,31,30,31};
int e[12]={31,28,31,30,31,30,31,31,30,31,30,31};
printf("请输入查询日期(年-月-日,如:2021-4-11):\n");
scanf("%d-%d-%d",&a,&b,&c);
printf("请输入%d年%d月%d日1月1日是星期几(1-7):\n",a,b,c);
for(i=1;i<a;i++)
{
if(i%100==0 && i%400==0 || i%4==0){
sum+=366;
}
else{
sum+=365;
}
}
f=sum%7;
printf("%d\n",f);
if(a%100==0 && a%400==0 || a%4==0){
for(m=0;m<b-1;m++)
{
s+=d[m];
}
s+=c;
n=f+s%7-1;
}
else{
for(m=0;m<b-1;m++){
s+=e[m];
}
s+=c;
n=f+s%7-1;
}
if(n==1){
printf("%d年%d月%d日是星期一\n",a,b,c);}
else if(n==2){
printf("%d年%d月%d日是星期二\n",a,b,c);}
else if(n==3){
printf("%d年%d月%d日是星期三\n",a,b,c);}
else if(n==4){
printf("%d年%d月%d日是星期四\n",a,b,c);}
else if(n==5){
printf("%d年%d月%d日是星期五\n",a,b,c);}
else if(n==6){
printf("%d年%d月%d日是星期六\n",a,b,c);}
else{printf("%d年%d月%d日是星期日\n",a,b,c);}
return 0;
}
- 首先要明确公元0年不存在,公元1年第一天为星期一
- 闰年与平年的区别:闰年366天,二月29天;平年365天,二月29天。
- 先计算这一年一月一日距公元1年1月1日有多少天,用天数取余7,余数 即该年1月1日为周几
- 知道了这一年1月1日为周几,再for循环(期间借用整型数组,因为每个月天数不定)计算出这一天距1月1日为多少天。
- 用天数取余7,即得这一天为星期几
11-09
6675