用c语言编写定义一个结构体日期(年、月、日),计算并输出该日期是该年中的第几天,要求自定义函数,用结构体指针作为函数参数,并要考虑闰年和非闰年情况。
时间: 2024-02-05 10:13:53 浏览: 70
以下是用C语言编写的程序,实现了计算一个日期是该年中的第几天的功能:
```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 daysOfMonth[] = {31, 28 + isLeapYear(date->year), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; // 每个月的天数
int days = 0;
for (int i = 0; i < date->month - 1; i++) {
days += daysOfMonth[i];
}
days += date->day;
return days;
}
int main() {
struct Date date = {2022, 10, 1};
int days = dayOfYear(&date);
printf("%d/%d/%d is the %dth day of %d.\n", date.year, date.month, date.day, days, date.year);
return 0;
}
```
程序中定义了一个结构体`Date`,包含年、月、日三个成员。同时还定义了两个函数,一个判断是否为闰年,一个计算该日期在该年中的第几天。
在`dayOfYear`函数中,首先定义了一个数组`daysOfMonth`,记录了每个月的天数,其中2月的天数根据是否为闰年进行了调整。然后使用一个循环计算出该日期之前所有月份的天数之和,最后再加上该日期的天数即可得到结果。
在`main`函数中,创建了一个`Date`类型的变量,然后调用`dayOfYear`函数计算该日期在该年中的第几天,并输出结果。
阅读全文