C语言按照格式“yyyy/mm/dd”(即“年/月/日”)输入日期,计算其是该年的第几天。要求定义和调用函数 day_of_year(year,month,day)计算并返回年 year、月 month 和日 day 对应的是该年的第几天。
时间: 2024-12-18 15:31:22 浏览: 6
在C语言中,计算给定日期(year/month/day)在当年的天数,需要考虑一些特殊情况,如闰年和每个月的天数变化。以下是一个简单的示例,定义了一个名为`day_of_year`的函数来完成这个任务:
```c
#include <stdio.h>
// 定义一个辅助函数判断是否为闰年
int is_leap_year(int year) {
if (year % 400 == 0)
return 1;
else if (year % 100 == 0)
return 0;
else if (year % 4 == 0)
return 1;
else
return 0;
}
// 计算一年中给定日期的天数
int day_of_year(int year, int month, int day) {
// 初始化天数为0
int days_in_month[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int days = 0;
// 正常月份
for (int i = 0; i < month - 1; ++i) {
days += days_in_month[i];
}
// 如果是闰年且当前是二月,多加一天
if (is_leap_year(year) && month == 2) {
days++;
}
// 加上当前月份的天数
days += day;
// 如果不是一月或二月,还需要加上前几个月的剩余天数
if (month > 2) {
for (int i = 0; i < month - 2; ++i) {
days += days_in_month[i + 2];
}
}
return days;
}
// 主函数中测试和调用函数
int main() {
int year, month, day;
printf("请输入日期(格式:yyyy/mm/dd): ");
scanf("%d/%d/%d", &year, &month, &day);
int result = day_of_year(year, month, day);
printf("给定日期 %d/%d/%d 是 %d 年的第 %d 天.\n", year, month, day, year, result);
return 0;
}
```
阅读全文