如何在程序中处理闰年的情况?
时间: 2024-09-28 10:15:45 浏览: 49
处理闰年的情况需要在上述的基本算法上添加额外的条件。闰年是指公历年份可以被4整除的年份,但是世纪年(即百年整数,如1900年、2000年等)需要满足两个条件:一是能被400整除,二是不是世纪闰年但能被100整除的则不是闰年。以下是修改后的代码片段:
```c
#include <stdio.h>
#include <stdbool.h> // 加入布尔类型支持
bool is_leap_year(int year) {
if (year % 4 != 0) return false; // 如果不能被4整除直接返回false
if (year % 100 == 0) {
if (year % 400 == 0) return true; // 能被400整除则是闰年
else return false;
}
return true; // 否则是闰年
}
int main() {
int month, year, days_in_month;
printf("请输入月份 (1-12): ");
scanf("%d", &month);
printf("请输入年份: ");
scanf("%d", &year);
bool leap_year = is_leap_year(year);
switch(month) {
// 省略其他非闰年情况,仅对2月做特殊处理
case 2:
days_in_month = leap_year ? 29 : 28;
break;
// 其他月份处理保持不变
// ...
default:
// 省略...
break;
}
printf("对于 %d 年的 %d 月,有 %d 天。\n", year, month, days_in_month);
return 0;
}
阅读全文