用switch结构实现输入某年某月某日,判断这一天是这一年的第几天 c语言
时间: 2024-12-12 18:19:02 浏览: 3
输入某年某月某日,判断这一天是这一年的第几天?
在C语言中,你可以使用`switch`结构结合一些基本的数学计算来实现这个功能。首先,你需要获取用户输入的年、月、日,然后根据闰年和平年的规则计算出该日期是一年中的第几天。这里是一个简单的示例:
```c
#include <stdio.h>
int is_leap_year(int year) {
return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0);
}
int days_in_month(int month, int year) {
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.\n");
return -1; // 表示错误处理
}
}
int main() {
int year, month, day;
printf("Enter the year, month, and day: ");
scanf("%d %d %d", &year, &month, &day);
if(month > 12 || day > days_in_month(month, year)) {
printf("Invalid date.\n");
return 1;
}
int total_days = 0;
for (int i = 1; i < month; ++i) {
total_days += days_in_month(i, year);
}
total_days += day;
printf("The given date (%d-%d-%d) is the %dth day of the year in %d.\n", day, month, year, total_days, year);
return 0;
}
```
在这个程序中,我们首先定义了两个辅助函数:`is_leap_year`用于检查是否是闰年,`days_in_month`用于返回给定月份有多少天。接着,在主函数中,我们先验证输入的有效性,然后通过循环累加每个之前的月份天数,并加上当前日期,得到全年总天数。
阅读全文