【C语言】获得月份天数

目录

前言

一、问题描述

二、解题思路 

 三、解法一(switch语句)

代码示例:

四、解法二(数组)

代码示例:

四、运行结果 

最后


前言

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


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

一、问题描述

 描述:

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

输入描述:

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

输出描述:

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

示例1:

输入:

2008 2

输出:

29

二、解题思路 

每月天数分布情况:

月份123456789101112
平年312831303130313130313031
闰年312931303130313130313031

除平年与闰年的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语言中遇到的习题,并表述出其解法及实现。欢迎家人们批评指正。小赵同志继续更新,不断学习的动力是宝子们一键三连的支持呀~

                                                  

  • 10
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
C语言中,我们可以通过年、月、日来计算总天数。首先,我们可以定义一个函数来实现这个功能。 函数的原型如下: int calculateDays(int year, int month, int day); 在函数中,我们可以使用一个变量来记录总天数。首先,我们需要判断给定的年份是不是闰年。闰年满足以下两个条件之一:(1)能被4整除但不能被100整除,或者(2)能被400整除。如果是闰年,则将该年的天数设置为366,否则为365。 然后,我们可以使用一个数组来存储每个月份天数。在数组中,下标表示月份,值表示该月份天数。 接下来,我们需要计算给定年份的月份的总天数。从1月开始遍历到给定的月份,累加每个月份天数。 最后,我们再加上给定年份中已经过去的天数,即给定的日期中的天数。 最后返回计算得到的总天数,即为所求。 下面是一个完整的示例代码: ```c #include <stdio.h> int calculateDays(int year, int month, int day) { int totalDays = 0; int leapYear = 0; int daysInMonth[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 判断是否为闰年 if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) { leapYear = 1; } // 计算每个月份的总天数 for (int i = 0; i < month - 1; i++) { totalDays += daysInMonth[i]; } // 加上给定日期中的天数 totalDays += day; // 如果是闰年且过了2月,则总天数需要加1 if (leapYear && month > 2) { totalDays++; } return totalDays; } int main() { int year, month, day; printf("请输入年份:"); scanf("%d", &year); printf("请输入月份:"); scanf("%d", &month); printf("请输入日期:"); scanf("%d", &day); int totalDays = calculateDays(year, month, day); printf("该日期为该年的第 %d 天\n", totalDays); return 0; } ``` 这样,我们就可以通过年、月、日来计算总天数了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值