题意大概数随便输入一个年月日,然后报出是周几用拆分的方法进行局部运算,再将局部累加对7求模
为毛对7 求模呢?看下面的switch语句
#include<stdio.h>
#include<math.h>//需要引入一个去摸的函数
int main(){
int rose,year,day,mouth,k,sum;
float t;
printf("请输入年月日");
scanf("%d%d%d",&year,&mouth,&day); //输入2016-3-16
sum=0;
for(int i=1;i<year;i++){ //计算年数的出的这一区间的总天数 算到2015
if(((i%4==0)&&(i%100!=0))||i%400==0){
sum+=366;
if (i==(year-1))
printf("12345646");
}else{
sum+=365;
}
}
for(int j=0;j<mouth;j++){ //算1月二月的总天数
if(j==1||j==3||j==5||j==7||j==8||j==10||j==12){
sum+=31;
}
if(j==4||j==6||j==9||j==11){
sum+=30;
}
if(j==2){
if(((year%4==0)&&(year%100!=0))||year%400==0){
sum+=29;
}else{
sum+=28;
}
}
}
sum=sum+day; //加16
t=7;
k=fmod(sum,t); //求模函数
switch(k) { //若总天数对7求模得的的那个数为0则表明 这天是周天,从公元1年开始算在纸上一推就出来了
case 0:rose=7;break;
case 1:rose=1;break;
case 2:rose=2;break;
case 3:rose=3;break;
case 4:rose=4;break;
case 5:rose=5;break;
case 6:rose=6;break;
}
printf("%d年%d月%d日%d天",year,mouth,day,rose);
}
这道题并不复杂,只是有些地方需要小心点