输入在一行中按照格式“yyyy/mm/dd”(即“年/月/日”)给出日期。注意:闰年的判别条件是该年年份能被4整除但不能被100整除、或者能被400整除。闰年的2月有29天。
时间: 2024-10-14 16:03:26 浏览: 73
java中日期格式的转换
在C语言中,你可以使用`scanf`函数从用户输入读取字符串,然后通过字符串处理和判断闰年规则来提取日期并检查其有效性。以下是一个简单的程序示例:
```c
#include <stdio.h>
#include <stdbool.h>
// 判断是否为闰年
bool is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int main() {
char date_input[11]; // 存储年月日,包括斜杠
scanf("%s", date_input); // 读取输入
// 检查输入格式是否正确("yyyy/mm/dd")
if (strlen(date_input) != 10 || date_input[4] != '/' || date_input[7] != '/') {
printf("Invalid input format! Please enter a date in 'yyyy/mm/dd' format.\n");
return 1;
}
int year = atoi(date_input + 0); // 提取年份
int month = atoi(date_input + 5); // 提取月份
int day = atoi(date_input + 8); // 提取日期
if (month < 1 || month > 12 || day < 1 || (day > 29 && !is_leap_year(year))) { // 检查日期合法性
printf("Invalid date! February can have 29 days only in a leap year.\n");
} else {
printf("Date is valid: %d/%d/%d\n", year, month, day);
}
return 0;
}
```
在这个程序中,我们首先定义了一个`is_leap_year`函数用于检查年份是否为闰年。然后,在`main`函数中,我们读取用户的输入,检查格式,如果不符合要求则提示错误。接下来,我们将每个月份的天数范围也考虑进来,确保输入的日期合法。
阅读全文