c语言运用switch循环结构 输入年月日并根据输入的年月日判断是那一年的第几天
时间: 2024-09-10 17:12:48 浏览: 110
C语言案例:键盘输入年月日,计算这一天是这一年的第几天.docx
在C语言中,使用switch循环结构来实现根据输入的年月日判断该日期是一年中的第几天,需要结合switch语句来处理每个月的天数,并累加之前月份的天数。以下是一个简单的实现示例:
首先,定义每个月的天数,考虑到闰年二月份有29天,其他年份是28天。然后通过switch语句来累加之前月份的天数,并加上当前月份的天数。闰年判断可以通过对年份进行判断,如果是4的倍数则是闰年,但整百年必须是400的倍数才是闰年。
```c
#include <stdio.h>
int main() {
int year, month, day, day_of_year = 0;
int is_leap_year;
// 用户输入年月日
printf("请输入年份: ");
scanf("%d", &year);
printf("请输入月份: ");
scanf("%d", &month);
printf("请输入日期: ");
scanf("%d", &day);
// 判断是否为闰年
is_leap_year = (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
// switch结构处理每个月的天数累加
switch (month) {
case 12: day_of_year += 30; // 11月的天数
case 11: day_of_year += 31; // 10月的天数
case 10: day_of_year += 30; // 9月的天数
case 9: day_of_year += 31; // 8月的天数
case 8: day_of_year += 31; // 7月的天数
case 7: day_of_year += 30; // 6月的天数
case 6: day_of_year += 31; // 5月的天数
case 5: day_of_year += 30; // 4月的天数
case 4: day_of_year += 31; // 3月的天数
case 3: day_of_year += (is_leap_year ? 29 : 28); // 2月的天数(考虑闰年)
case 2: day_of_year += 31; // 1月的天数
case 1: day_of_year += day;
}
// 输出结果
printf("%d年%d月%d日是一年中的第%d天。\n", year, month, day, day_of_year);
return 0;
}
```
在这个代码中,我们没有单独处理每个月的天数,而是通过switch语句从目标月份的前一个月累加到目标月份。注意,这里使用了switch穿透特性,即在没有break的情况下继续执行下一个case,直到遇到break为止。
阅读全文