C语言输入年月日,输出是当年的第几天,利用switch
时间: 2024-12-12 13:26:19 浏览: 11
在C语言中,为了计算给定日期是一年中的第几天,我们可以使用一个switch结构结合闰年的判断条件。下面是一个简单的示例:
```c
#include <stdio.h>
#include <time.h> // 引入time_t和mktime函数
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;
}
}
int day_of_year(int year, int month, int day) {
time_t t = mktime(&tm_time{0, month - 1, day, 0, 0, 0, 0, 0, year}); // tm_time结构用于存储时间信息
struct tm* datetime = localtime(&t);
return datetime->tm_yday + (is_leap_year(year) && month > 2 ? 1 : 0);
}
int main() {
int year, month, day;
printf("请输入年、月、日(格式:YYYY MM DD): ");
scanf("%d %d %d", &year, &month, &day);
if (month < 1 || month > 12 || day < 1) {
printf("错误!月份应介于1到12之间,日期应大于0。\n");
return 1;
}
int day_in_year = day_of_year(year, month, day);
printf("给定日期 %d-%02d-%02d 是当年的第 %d 天。\n", year, month, day, day_in_year);
return 0;
}
```
这段代码首先定义了一个辅助函数 `is_leap_year()` 来检查是否为闰年,接着 `day_of_year()` 函数接收年份、月份和日期作为参数,通过 `mktime()` 和 `localtime()` 函数计算对应的天数。请注意,`mktime()` 和 `localtime()` 需要在 `<time.h>` 头文件中声明。
阅读全文