c语言 15.用结构体存放一个日期,写一个函数计算该日是当年的第几天。
时间: 2024-03-19 15:43:21 浏览: 72
可以定义一个名为 `Date` 的结构体,包含年、月、日三个字段,然后编写一个函数来计算当年的第几天。具体实现如下:
```c
#include <stdio.h>
struct Date {
int year;
int month;
int day;
};
// 判断是否为闰年
int isLeapYear(int year) {
return (year % 4 == 0 && year % 100 != 0) || year % 400 == 0;
}
// 计算当年的第几天
int dayOfYear(struct Date date) {
int days[13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数,2月份需要根据闰年特判
int count = 0;
for (int i = 1; i < date.month; i++) {
count += days[i];
}
count += date.day;
if (isLeapYear(date.year) && date.month > 2) { // 闰年2月份有29天
count++;
}
return count;
}
int main() {
struct Date date;
printf("请输入日期,格式为yyyy-mm-dd:");
scanf("%d-%d-%d", &date.year, &date.month, &date.day);
int count = dayOfYear(date);
printf("%d年%d月%d日是当年的第%d天\n", date.year, date.month, date.day, count);
return 0;
}
```
这里定义了一个 `isLeapYear` 函数来判断是否为闰年,根据闰年的定义,能被4整除但不能被100整除的年份,或者能被400整除的年份,都是闰年。
在 `dayOfYear` 函数中,首先定义了一个数组 `days` 来存储每个月的天数,然后通过一个循环计算出该月之前的天数之和,最后再加上当月的天数。如果是闰年,并且该月在2月份之后,还需要再加上1天。
在 `main` 函数中,先读入一个日期,然后调用 `dayOfYear` 函数计算当年的第几天,并输出结果。
阅读全文