前言
本文将详细地从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;
}