C语言 ——— 编写代码,获得月份天数

目录

题目要求

年月份常识

代码实现

方法一: swicth

方法二:下标标记法


题目要求

输入 年份月份

输出 这一年份 这个月 有多少天

多组输入,多组输出


年月份常识

135781012月 的月份天数是 31天

46911月 的月份天数是 30天

平年2月 份天数是 28天

闰年2月 份天数是 29天

年份 能被4取模净 并且不被100取模净 或者 能被400取模净 时:为闰年,否则为平年


代码实现

方法一: swicth

代码演示:

#include<stdio.h>
int get_days_of_month(int year, int month)
{
	switch (month)
	{
	case 1:
	case 3:
	case 5:
	case 7:
	case 8:
	case 10:
	case 12:
		return 31;

	case 4:
	case 6:
	case 9:
	case 11:
		return 30;

	case 2:
		if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
			return 29;
		else
			return 28;
	}
}
int main()
{
	//创建
	int year = 0;
	int month = 0;

	//多组输入及输出
	while (scanf("%d %d", &year, &month) == 2)
	{
		int days = get_days_of_month(year, month);
		
		printf("%d年的%d月有%d天\n", year, month, days);
	}

	return 0;
}

代码解析: 

月份有相同的天数,所以可以使用 switch语句实现

只是 2月份 需要单独判断,判断 参数 year 的值即可 

代码验证: 


方法二:下标标记法

 代码演示:

#include<stdio.h>
int get_days_of_month(int year, int month)
{
	int days[] = { 0, 31,28,31,30,31,30,31,31,30,31, 30, 31 };
//                 0  1  2  3  4  5  6  7  8  9  10  11  12

	if (((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) && (month == 2))
		days[month] = days[month] + 1;

	return days[month];
}
int main()
{
	//创建
	int year = 0;
	int month = 0;

	//多组输入及输出
	while (scanf("%d %d", &year, &month) == 2)
	{
		int days = get_days_of_month(year, month);
		
		printf("%d年的%d月有%d天\n", year, month, days);
	}

	return 0;
}

代码解析:

月份 作为 下标,相对应的 下标月份位置 存储 相对应的 天数

只是 2月份 要 单独计算 即可

代码验证:

  • 6
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值