```c
include
int isLeapYear(int year) {
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
return 1; // 是闰年
} else {
return 0; // 不是闰年
}
}
int getDaysInMonth(int year, int month) {
int days;
switch (month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
days = 31;
break;
case 4: case 6: case 9: case 11:
days = 30;
break;
case 2:
if (isLeapYear(year)) {
days = 29;
} else {
days = 28;
}
break;
default:
days = -1; // 无效的月份
break;
}
return days;
}
int main() {
int day, month, year, sum, leap;
printf("请输入年,月,日\n");
scanf("%d,%d,%d", &year, &month, &day);
sum = 0;
for (int i = 1; i < month; i++) {
sum += getDaysInMonth(year, i);
}
sum += day;
if (isLeapYear(year) && month > 2) {
sum++;
}
printf("这是这一年的第%d天。\n", sum);
return 0;
}
```
代码说明:
isLeapYear函数 :判断给定的年份是否为闰年。getDaysInMonth函数:
根据给定的年份和月份返回该月的天数。
main函数
提示用户输入年、月、日。
使用for循环计算输入日期之前所有月份的天数总和。
将输入日期的天数加到总和中。
如果输入年份是闰年且月份大于2,则总天数加1。
输出结果。
这个程序可以正确处理闰年和非闰年,并且能够处理用户输入的月份超出1-12范围的情况。