【C语言】获得月份天数

目录

前言

一、问题描述

二、解题思路 

 三、解法一(switch语句)

代码示例:

四、解法二(数组)

代码示例:

四、运行结果 

最后


前言

C语言练习题---获得月份天数的两种方法,从switch语句与数组两个方面展开叙述。


提示:以下是本篇文章正文内容,下面案例可供参考

一、问题描述

 描述:

KiKi想获得某年某月有多少天,请帮他编程实现。输入年份和月份,计算这一年这个月有多少天。

输入描述:

多组输入,一行有两个整数,分别表示年份和月份,用空格分隔。

输出描述:

针对每组输入,输出为一行,一个整数,表示这一年这个月有多少天。

示例1:

输入:

2008 2

输出:

29

二、解题思路 

每月天数分布情况:

月份 1 2 3 4 5 6 7 8 9 10 11 12
平年 31 28 31 30 31 30 31 31 30 31 30 31
闰年 31 29 31 30 31 30 31 31 30 31 30 31

除平年与闰年的2月分天数不一样其他都一样,可以用switch、数组两种方法来进行解题

 三、解法一(switch语句)

使用switch语句,case分1~12。

case 1,3,5,7,8,10,12 天数都为31天;

case 4,6,9,11 天数都为3;

case 2 分平年、闰年两种情况。

代码示例:

​
int main()
{
	int y = 0;
	int m = 0;
	while (scanf("%d%d", &y, &m) == 2)
	{
		switch(m)
		{
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				printf("%d\n",31);
				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");
					else
						printf("28\n");
				}
		}
	}
	return 0;
}

​

四、解法二(数组)

将12个月份的天数按顺序存放在数组中,为了与数组下标相对应,增加一个元素0。

判断年份为平年还是闰年。

代码示例:

int my_year(int y)
{
    return (((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0));
}

int main()
{
    int y, m;
    int arr[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
    while ((scanf("%d %d", &y, &m)) == 2)
    {
        int day = arr[m];
        if (my_year(y) && m == 2)
        {
            day++;
        }
        printf("%d\n", day);
    }
    return 0;
}

四、运行结果 


最后

快乐的时光总是短暂的,以上就是今天要讲的内容,本文介绍了小赵同志在学习C语言中遇到的习题,并表述出其解法及实现。欢迎家人们批评指正。小赵同志继续更新,不断学习的动力是宝子们一键三连的支持呀~

                                                  

猜你喜欢

转载自blog.csdn.net/weixin_70411664/article/details/128989325