pta计算某年某月某日是该年中的第几天
时间: 2025-07-06 20:54:40 浏览: 3
### 计算给定日期是一年中的第几天
为了实现这一功能,可以基于提供的 `DaySum` 函数逻辑来编写完整的程序。此函数用于计算从年初到给定日期(不包括该日期)的总天数[^1]。
下面是一个具体的 C 语言代码示例:
```c
#include <stdio.h>
// 判断是否为闰年
int IsLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
// 计算从年初到给定日期之前的总天数
int DaySum(int year, int MonthDay[], int month, int day) {
if (IsLeapYear(year)) {
MonthDay[2] = 29;
}
int sumDays = 0;
for (int i = 1; i < month; ++i) {
sumDays += MonthDay[i];
}
sumDays += day;
return sumDays;
}
int main(void) {
int year = 0;
int month = 0;
int day = 0;
// 定义每个月的标准天数数组
int MonthDay[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
// 获取用户输入的日期
scanf("%d-%d-%d", &year, &month, &day);
// 调用 DaySum 函数获取一年中的具体天数
printf("这是今年的第%d天\n", DaySum(year, MonthDay, month, day));
return 0;
}
```
这段代码首先定义了一个判断闰年的辅助函数 `IsLeapYear()` 来处理不同类型的年份情况;接着实现了核心算法 `DaySum()`,其内部会根据传入的年份调整二月份的长度,并通过遍历累加前几个月的日数再加上当前月的具体日子得出最终的结果。
阅读全文
相关推荐
















