输入年份和月份,输出该月的天数。闰年的2月是29天,平年28天,需增加对闰年的判断。 当以下情况之一满足时,这一年是闰年: 1.年份是4的倍数而不是100的倍数; 年份是400的倍数。 其他的年份都不是闰年。
时间: 2024-10-28 14:07:24 浏览: 12
C++根据输入年份计算每月的天数
要实现这个功能,你可以创建一个名为`days_in_month()`的函数,接受两个参数:年份(int)和月份(int),并根据给定规则返回相应月份的天数。下面是C语言的代码实现:
```c
#include <stdio.h>
// 判断是否为闰年
int is_leap_year(int year) {
if (year % 4 == 0) {
if (year % 100 == 0) {
if (year % 400 == 0)
return 1; // 是闰年
else
return 0; // 不是闰年
} else {
return 1; // 是闰年
}
} else {
return 0; // 不是闰年
}
}
// 根据年份和月份计算天数
int days_in_month(int year, int month) {
switch (month) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
return 31;
case 4:
case 6:
case 9:
case 11:
return 30;
case 2:
if (is_leap_year(year))
return 29;
else
return 28;
default:
printf("Invalid month number. Please enter a valid value between 1 and 12.\n");
return -1; // 表示输入错误
}
}
int main() {
int year, month;
printf("Enter the year: ");
scanf("%d", &year);
printf("Enter the month: ");
scanf("%d", &month);
if (month >= 1 && month <= 12) {
int day_count = days_in_month(year, month);
if (day_count != -1)
printf("The number of days in %d-%02d is %d\n", year, month, day_count);
else
printf("Day count not calculated due to invalid input.\n");
} else {
printf("Month should be between 1 and 12.\n");
}
return 0;
}
```
在这个程序中,首先定义了一个`is_leap_year()`函数来检查给定的年份是否是闰年。然后在`days_in_month()`函数中,我们使用switch语句根据不同月份返回相应的天数,特殊情况是2月,如果输入的是闰年则返回29天,否则返回28天。
在主函数`main()`中,用户会被要求输入年份和月份,程序会根据这些值调用`days_in_month()`函数并输出结果。如果输入的月份不在1到12之间,程序会给出提示。
阅读全文