用C语言完成1、输入一个日期,判断输入的日期是否合法。 要求:先提示“输入一个日期(yyyy-m-d):”,按“yyyy-m-d”格式输入日期,判断输入的日期是否合法(年份1-9999,月份1-12,日期不同月份不同在1-31、30或28、29之间,二月份要考虑闰年),不合法时输出是年份、月份、还是日期错误。合法时按格式“输入的日期是: yyyy年mm月dd日”的 格式输出该日期。
时间: 2023-05-21 18:05:11 浏览: 642
ChatGPT: 以下是用C语言实现判断输入日期合法性的代码:
```c
#include <stdio.h>
int isLeapYear(int year) {
return (year % 400 == 0) || ((year % 4 == 0) && (year % 100 != 0));
}
int checkDate(int year, int month, int day) {
if (year < 1 || year > 9999) {
return 1;
}
if (month < 1 || month > 12) {
return 2;
}
int maxDay = 0;
switch (month) {
case 2:
maxDay = isLeapYear(year) ? 29 : 28;
break;
case 4:
case 6:
case 9:
case 11:
maxDay = 30;
break;
default:
maxDay = 31;
break;
}
if (day < 1 || day > maxDay) {
return 3;
}
return 0;
}
void printDate(int year, int month, int day) {
printf("输入的日期是: %d年%d月%d日\n", year, month, day);
}
int main() {
int year, month, day;
printf("输入一个日期(yyyy-m-d):");
scanf("%d-%d-%d", &year, &month, &day);
int result = checkDate(year, month, day);
if (result == 0) {
printDate(year, month, day);
} else if (result == 1) {
printf("输入的年份不合法\n");
} else if (result == 2) {
printf("输入的月份不合法\n");
} else if (result == 3) {
printf("输入的日期不合法\n");
}
return 0;
}
```
注意:以上代码只是给出了一个参考实现,可能还有更优秀的方法。