定义一个结构体变量(包括年、月、日)。计算该日在本年中是第几天,注意闰年问题(即将闰年情况包含在内)。
#include <stdio.h>
typedef struct {
int year;
int month;
int day;
} Date;
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0)
return 1;
return 0;
}
int daysOfMonth(int month, int year) {
int days[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if (month == 2 && isLeapYear(year))
return 29;
return days[month - 1];
}
int dayOfYear(Date date) {
int days = 0;
for (int i = 1; i < date.month; i++) {
days += daysOfMonth(i, date.year);
}
days += date.day;
return days;
}
int main() {
Date date;
printf("Enter year, month, day: ");
scanf("%d %d %d", &date.year, &date.month, &date.day);
int day = dayOfYear(date);
printf("The day is