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

题意大概数随便输入一个年月日,然后报出是周几用拆分的方法进行局部运算,再将局部累加对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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值