如何使用C语言中的switch结构来根据输入的年份、月份和日期计算对应的是当月的第几天,并同时判断该年份是否为闰年?
时间: 2024-11-22 19:42:13 浏览: 8
第一章 日期转换小工具.pptx
在C语言中,可以使用`switch`结构结合嵌套的`if`条件来实现这个功能。首先,我们需要检查年份是否为闰年,然后根据月份确定日期的天数。以下是一个简单的示例:
```c
#include <stdio.h>
int is_leap_year(int year) {
if (year % 4 != 0)
return 0;
else if (year % 100 != 0)
return 1;
else if (year % 400 != 0)
return 0;
else
return 1; // 年份能被400整除,是闰年
}
int main() {
int year, month, day;
printf("请输入年份:");
scanf("%d", &year);
printf("请输入月份(1-12):");
scanf("%d", &month);
printf("请输入日期:");
scanf("%d", &day);
// 判断闰年
int leap = is_leap_year(year);
switch(month) {
case 1:
day_in_month = (leap && month == 2) ? 29 : 31;
break;
case 2:
day_in_month = (leap) ? 29 : 28;
break;
case 3:
day_in_month = 31;
break;
case 4:
day_in_month = 30;
break;
case 5:
day_in_month = 31;
break;
case 6:
day_in_month = 30;
break;
case 7:
day_in_month = 31;
break;
case 8:
day_in_month = 31;
break;
case 9:
day_in_month = 30;
break;
case 10:
day_in_month = 31;
break;
case 11:
day_in_month = 30;
break;
case 12:
day_in_month = 31;
break;
default:
printf("无效的月份");
return 1; // 错误处理
}
// 检查输入的日期是否在该月份内
if (day <= day_in_month) {
printf("该日期是%d月的第%d天。\n", month, day);
} else {
printf("错误:月份 %d 只有 %d 天。\n", month, day_in_month);
}
return 0;
}
```
阅读全文