7-2 闰年判定 分数 21 作者 STT 单位 河北农业大学 定义一个结构体变量(包括年、月、日),计算该日在本年中的第几天?注意闰年问题。 输入格式: 输入年月日,各占一行 2000 2 2 输出格式: 输出输入年月日在一年中第几天
时间: 2024-09-17 07:06:35 浏览: 61
在C语言中,为了判断一个日期是否为闰年并计算该日在当年的总天数,你可以定义一个结构体`date`来存储年、月和日,并编写函数来处理闰年的规则。闰年规则是:能被4整除的年份通常是闰年,但如果这个年份可以被100整除,则它不是闰年;但是,如果它可以被400整除,则仍然是闰年。
以下是实现的步骤:
```c
#include <stdio.h>
// 结构体表示日期
struct date {
int year;
int month;
int day;
};
// 判断是否为闰年的辅助函数
int is_leap_year(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
return year % 400 == 0;
}
return true; // 年份能被4整除且不能被100整除,是闰年
}
return false;
}
// 计算日期在给定年份中的位置
int day_of_year(struct date d) {
int days_in_month[] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 假设2月份非闰年有28天
int total_days = 0;
for (int i = 0; i < d.month - 1; ++i) {
total_days += days_in_month[i];
}
if (d.month > 2 && is_leap_year(d.year)) {
total_days += 1; // 考虑到闰年二月多一天
}
total_days += d.day;
return total_days;
}
int main() {
struct date input_date;
printf("请输入年月日,各占一行:\n");
scanf("%d %d %d", &input_date.year, &input_date.month, &input_date.day);
int year_days = day_of_year(input_date);
printf("输入日期 %d-%02d-%02d 在 %d 年中是第 %d 天。\n", input_date.year, input_date.month, input_date.day, input_date.year, year_days);
return 0;
}
```
阅读全文