#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;
}