6-5 日期 - 2. 求月天数

6-5 日期 - 2. 求月天数

请编写函数,求某年某月的天数,即该月的最大日数。

函数原型

int MaxDayMonth(int year, int month);

说明:参数 year和month 为年份和月份,若参数正确有效,则函数值为该月的最大日数,否则为0。

裁判程序

#include <stdio.h>

int IsLeapYear(int year);
int MaxDayMonth(int year, int month);

int main()
{
    int y, m;
    scanf("%d%d", &y, &m);
    printf("%d\n", MaxDayMonth(y, m));
    return 0;
}

......

/* 你提交的代码将被嵌在这里 */

输入样例1

1995 3

输出样例1

31

输入样例2

2400 2

输出样例2

29

输入样例3

-15 21

输出样例3

0

关联习题:日期-判断闰年。

c语言解析:

int MaxDayMonth(int year, int month)
{
    int days[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
    int maxDay = 0;
    if (year >= 0 && month >= 1 && month <= 12)
    {
        maxDay = days[month - 1];
        if (month == 2)
        {
            if (IsLeapYear(year))maxDay += 1;
        }
    }
    else return 0;
    return maxDay;
}

### C++ 实现计算某年某月最大天数函数 以下是基于 C++ 的 `MaxDayMonth` 函数实现,用于计算给定年份和份的最大天数: ```cpp #include <iostream> using namespace std; // 判断是否为闰年的辅助函数 bool isLeapYear(int year) { if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) { return true; } return false; } // 计算某年某月最大天数函数 int MaxDayMonth(int year, int month) { if (month < 1 || month > 12) { throw invalid_argument("Invalid month value"); // 如果输入非法,则抛出异常 } switch (month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; // 大返回31天 case 4: case 6: case 9: case 11: return 30; // 小返回30天 case 2: return isLeapYear(year) ? 29 : 28; // 二根据闰年判断返回28或29天 } return -1; // 不会到达这里,但为了编译器安全加上默认值 } int main() { try { int year, month; cout << "Enter the year and month: "; cin >> year >> month; int maxDays = MaxDayMonth(year, month); cout << "The maximum number of days in " << month << "/" << year << " is " << maxDays << endl; } catch (const exception& e) { cerr << "Error: " << e.what() << endl; } return 0; } ``` #### 解析 上述代码实现了两个主要功能: 1. **闰年判断逻辑**:通过定义一个布尔型函数 `isLeapYear` 来判定指定年份是否为闰年。如果满足条件 `(year % 4 == 0 && year % 100 != 0)` 或者 `(year % 400 == 0)`,则该年为闰年[^1]。 2. **最大天数计算**:利用 `switch-case` 结构处理不同份的情况,并调用 `isLeapYear` 函数来决定二的具体天数。 此程序还包含了基本错误检测机制,当用户提供不合法的份时,将抛出标准库中的 `invalid_argument` 异常并终止执行流程[^2]。 #### 注意事项 - 用户需确保输入有效的整数值作为年份与份参数。 - 对于超出范围或者不符合公历规则的数据(如负数),应提前验证其合法性以防止潜在运行期崩溃风险。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微__凉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值