当月的天数该如何计算

146 阅读2分钟

前言

  本文将详细地从c语言方面介绍如何计算当月或者指定月份的天数,代码简单易懂,大家可以放心观看。

关于年

  首先我们需要了解闰年和平常年的区别。

  1582年以来公历的置闰规则:

  普通闰年:公历年份是4的倍数,且不是100的倍数的,为闰年(如2004年、2020年等就是闰年)。

  世纪闰年:公历年份是整百数的,必须是400的倍数才是闰年(如1900年不是闰年,2000年是闰年)。

关于月

  口诀: 一月大,二月平,三月大,四月小,五月大,六月小,七月大,八月大,九月小,十月大,十一月小,十二月大。

大:指当月天数为31

平:指当月天数为29天或28天,这二者的区别就在于当月所在的年份是否是闰年。这也是我们破题的关键

小:指当月天数为30

逻辑思路

`Y % 4 == 0 && Y % 100 != 0 || Y % 400 == 0

根据年的规则我们能够得出上述表达式。

根据月的规则我们发现switch语句相当适合用来作为代码的主体。

完整代码

int main()
{
	int Y = 0;//年份
	int M = 0;//月份

	while (scanf("%d %d", &Y, &M) != EOF) //循环输出
	{
		switch (M)
		{
		case 1://一三五七八十 十二月大
		case 3:
		case 5:
		case 7:
		case 8:
		case 10:
		case 12:
			printf("31\n");
			break;
		case 4://四六九 十一月小
		case 6:
		case 9:
		case 11:
			printf("30\n");
			break;
		case 2://二月平
			if (Y % 4 == 0 && Y % 100 != 0 || Y % 400 == 0)
			{
				printf("29\n");//常年
				break;
			}
			else
			{
				printf("28\n");//闰年
				break;
			}
		default:;
		}
	}
	return 0;
}