用C语言,按照 **** ** **(年 月 日,比如2023 4 25)格式输入一个具体的年月日期,通过程序计算: 该日期是这一年度的第几天。 如果输入格式非法或日期本身无效,则输出“输入日期有误!”的提示。
时间: 2024-06-18 22:05:52 浏览: 119
您好,以下是用C语言计算输入日期是该年度的第几天的代码及注释,希望对您有帮助:
```
#include <stdio.h>
#include <stdlib.h>
// 判断输入的年份是否为闰年
int isLeapYear(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
return 1;
} else {
return 0;
}
}
// 计算该日期是这一年度的第几天
int getDayOfYear(int year, int month, int day) {
int daysOfMonth[] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; // 各月份的天数
int i, days = 0;
// 判断输入的年、月、日是否合法
if (year <= 0 || month <= 0 || month > 12 || day <= 0 || day > daysOfMonth[month]) {
printf("输入日期有误!\n");
return -1; // 返回-1表示输入日期非法
}
// 如果是闰年,则将2月份的天数改为29天
if (isLeapYear(year)) {
daysOfMonth = 29;
}
// 计算该日期是这一年度的第几天
for (i = 1; i < month; i++) {
days += daysOfMonth[i];
}
days += day;
return days;
}
int main() {
int year, month, day;
printf("请输入一个具体的年月日期(格式:**** ** **): ");
scanf("%d %d %d", &year, &month, &day);
int days = getDayOfYear(year, month, day);
if (days != -1) {
printf("该日期是这一年度的第%d天\n", days);
}
return 0;
}
```
阅读全文