C语言:判断日期是否合法!

#include <stdio.h>

// 定义日期结构体
struct Date
{
    int year;
    int month;
    int day;
};

// 将结构体重命名为Date
typedef struct Date Date;

// 函数声明:检查日期是否合法
int checkDate(Date date);

int main()
{
    Date date;
    int x;
    do
    {
        printf("请输入日期(年 月 日):\n");
        scanf_s("%d%d%d", &date.year, &date.month, &date.day);
        x = checkDate(date);
    } while (x == 0);

    if (x == 1)
        printf("该日期合法!\n");

    return 0;
}

// 函数定义:检查日期是否合法
int checkDate(Date date)
{
    int y = 0;
    // 根据月份判断天数的情况
    if (date.month == 1 || date.month == 3 || date.month == 5 || date.month == 7 || date.month == 8 || date.month == 10 || date.month == 12)
        y = 31;
    if (date.month == 4 || date.month == 6 || date.month == 9 || date.month == 11)
        y = 30;
    if (date.month == 2) {
        if ((date.year % 4 == 0 && date.year % 100 != 0) || date.year % 400 == 0)
            y = 29;
        else
            y = 28;
    }
    // 判断日期范围是否合法
    if (date.month < 1 || date.month > 12)
        return 0;
    else if (y == 31 && (date.day < 1 || date.day > 31))
        return 0;
    else if ((y == 30) && (date.day < 1 || date.day > 30))
        return 0;
    else if ((y == 29) && (date.day < 1 || date.day > 29))
        return 0;
    else if ((y == 28) && (date.day < 1 || date.day > 28))
        return 0;
    else
        return 1;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值