蓝桥杯之年月日得到周几(年月日问题,包含平瑞年算法)

来源:互联网 发布:flash网站源码下载 编辑:程序博客网 时间:2024/05/31 19:51
题意大概数随便输入一个年月日,然后报出是周几用拆分的方法进行局部运算,再将局部累加对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);}
这道题并不复杂,只是有些地方需要小心点
0 0