用c语言判断一个日期是否合法 输入格式:YYYY/MM/DD(分别表示年月日) 输出:若合法,输出yes,否则no
时间: 2024-10-24 17:14:23 浏览: 46
在C语言中,判断一个日期是否合法通常需要考虑月份天数的限制以及闰年的规则。这里提供一种简单的算法,不过这只是一个基础的示例,并未涵盖所有边缘情况,例如00年的问题(特殊情况)。以下是通过检查每个月份天数来实现的基本函数:
```c
#include <stdio.h>
int isLeapYear(int year) {
if (year % 4 != 0)
return 0;
else if (year % 100 != 0)
return 1;
else if (year % 400 != 0)
return 0;
else
return 1;
}
int daysInMonth(int month, int year) {
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;
default: // 处理闰年二月的情况
if(isLeapYear(year))
return 29;
else
return 28;
}
}
int isValidDate(int day, int month, int year) {
if (day <= 0 || day > daysInMonth(month, year)) {
printf("Invalid date.\n");
return 0; // 合法范围外
}
if (month < 1 || month > 12) {
printf("Invalid month.\n");
return 0;
}
return 1; // 如果所有条件都满足,返回1表示日期有效
}
// 主函数示例
int main() {
int year, month, day;
scanf("%d/%d/%d", &year, &month, &day);
if (isValidDate(day, month, year))
printf("yes\n");
else
printf("no\n");
return 0;
}
```
阅读全文