根据当前日期求取当年是否为闰年,当天是周几。

又或许看到这封信的你并不是今年的考生
那我们可以一起在评论区为考生加油
也希望在之后人生的一次次“大考”中
我们都可以交出自己不悔的答卷
让我们一起
赴一场奔向银河的约定
期待在星河灿烂的地方
一起实现
闪闪发光的梦
– 歌曲《银河赴约》
2020年网易云音乐助力高考自制曲目

一、根据给定年份计算平闰年
  • 1582年以来的置闰规则:
    普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。
    世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。
  • 1582年以前的惯例:
    四年一闰;如果公元A年的A(正数)能被4整除,那么它就是闰年;如果公元前B年的B(正数)除以4余1,那么它也是闰年。

– 百度百科

利用上述的算法就可以判断目标年是否为闰年,一般我们都是使用1582年以来的置闰规则。
百度百科 - 闰年

二、根据给定日期计算星期

内容详情请看:百度百科 - 蔡勒公式

知道当前时间的年月日,可以根据蔡勒公式(适用于于公历)来计算当天是星期几,公式如下所示:
w=y+[y/4]+[c/4]- - 2c+[26(m+1)/10]+d- -1 1
值得注意的是:该公式只适用于 1582年10月5日或之后的时间。

其中

  • w 为星期,如果想要得到 0-6(星期日-星期六),则还需对 7 取余;
  • c 为世纪减 1,比如 2018 对应的 c 是 20,1990 年对应的 c 是 19;
  • y 是年份,如 2018 年 y 等于 18
  • m 是月份,其范围是 3 到 14,1 月和 2 月被安排到去年的 13 月和 14 月,如果月份是 1
    月和 2 月那么年份就要减 1,比如 2000 年 1 月,此时 c 为 19,y 为 99,m 为 13。
  • d 就是几号

C语言的实现代码如下:

#include<stdio.h>
int main()
{
 	int year, month, day;
 	
 	while (scanf("%d %d %d", &year, &month, &day) != EOF)
 	{
  		if (month == 1 || month == 2)//判断month是否为1或2 
   			year--, month += 12;
   			
  		int c = year / 100;
  		int y = year - c * 100;
  		int week = y + y / 4 + c / 4 - 2 * c + 26 * (month + 1) / 10 + day - 1;
  		while (week < 0)
   			week += 7;
  		week %= 7;
  
	  	switch (week)
	  	{
	  		case 1:printf("Monday\n"); break;
	  		case 2:printf("Tuesday\n"); break;
	  		case 3:printf("Wednesday\n"); break;
	  		case 4:printf("Thursday\n"); break;
	  		case 5:printf("Friday\n"); break;
	  		case 6:printf("Saturday\n"); break;
	  		case 0:printf("Sunday\n"); break;
	  	}
 	}
 	
 	return 0;
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值