c语言计算每一年的母亲节是哪一天

本问题基于1900年及以后的年份问题计算,常见的问题如:计算每一年的母亲节是哪一天等。

#include<stdio.h>
int main() {
	int year, day, leapyear=0;
	scanf("%d", &year);
	for (int i = 1900; i <= year; i++) {
		if (i%400==0||((i %4==0)&&(i%100!=0)))leapyear += 1;
	}
	day =( (year - 1899) * 365 + leapyear - (31 + 30 + 31 + 31 + 30 + 31 + 30 + 31))%7;
    printf("%d\n", 14 - day);
}

闰年:能被400整除或能被4整除但不能被100整除

由于1900年1月1日为星期一,所以为了便于计算,可以以1900年为起始点来进行计算。

首先计算出1900年至输入的年份之间有多少润年,用(int)leapyear 表示(因为润年比普通的年份多一天,所以要考虑闰年对日期计算的影响)。

其次计算出所求年份的4月30日是星期几,用(int)day 表示。计算方法为:计算出从1900年1月1日算起到所求年份的4月30日共有几天,用该天数对7取余数,所得的结果即为4月30日为星期几。

最后,因为母亲节为5月的第二个星期日,所以输出14-day即为所求。

希望这篇文章对您的c语言学习有所帮助!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值