编写一个闰年判断函数【int Isleap(int year)】、一个验证日期合法性的函数【int IsDate(int year,int month,int day)】和一个计算日期对应天数的函数【int Days(int year,int month,int day),要求计算前调用IsDate()函数判断日期的合法性,调用Isleap()判断闰年】,在main函数输入给定日期的年-月-日,调用Days函数求出这天是该年的第几天。用c语言编写
时间: 2023-12-05 14:14:28 浏览: 108
好的,我来为您提供相应的代码:
```
#include <stdio.h>
int Isleap(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
int IsDate(int year, int month, int day) {
if (year < 1 || month < 1 || month > 12 || day < 1)
return 0;
if (month == 2) {
if (Isleap(year)) {
if (day > 29)
return 0;
} else if (day > 28)
return 0;
} else if (month == 4 || month == 6 || month == 9 || month == 11) {
if (day > 30)
return 0;
} else if (day > 31)
return 0;
return 1;
}
int Days(int year, int month, int day) {
if (!IsDate(year, month, day))
return -1;
int days_of_month[] = {31, Isleap(year) ? 29 : 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int total_days = 0;
for (int i = 0; i < month - 1; ++i) {
total_days += days_of_month[i];
}
total_days += day;
return total_days;
}
int main() {
int year, month, day;
printf("请输入年-月-日(用空格隔开):");
scanf("%d %d %d", &year, &month, &day);
int total_days = Days(year, month, day);
if (total_days == -1)
printf("日期不合法!");
else
printf("%d年%d月%d日是该年的第%d天\n", year, month, day, total_days);
return 0;
}
```
其中,函数 `Isleap` 判断是否是闰年,函数 `IsDate` 判断日期是否合法,函数 `Days` 计算该日期是该年的第几天。在 `main` 函数中,通过输入得到年-月-日,调用 `Days` 函数计算该日期是该年的第几天,并输出结果。
阅读全文