用c语言打印给定一个日期,输出这个日期是该年的第几天。 Input 输入数据有多组,每组占一行,数据格式为YYYY/MM/DD组成,具体参见sample input ,另外,可以向你确保所有的输入数据是合法的。 Output 对于每组输入数据,输出一行,表示该日期是该年的第几天。
时间: 2024-10-29 16:15:43 浏览: 37
在 C 语言中,你可以使用 `mktime` 函数将输入的日期字符串转换成时间戳,然后通过减去年初的时间戳得到相差天数。以下是一个简单的示例程序来实现这一功能:
```c
#include <stdio.h>
#include <time.h>
int main() {
const char *fmt = "%Y/%m/%d";
int year, month, day;
// 输入日期
while (scanf("%4d/%02d/%02d", &year, &month, &day) == 3) { // 假设输入格式正确
struct tm t = {0};
t.tm_year = year - 1900; // 从公元1900年开始计年
t.tm_mon = month - 1; // 月份从0开始计
t.tm_mday = day;
// 计算距离当年第一天的天数
time_t timestamp = mktime(&t);
int days_since_epoch = mktime(&t) - mktime(&ttm[0]); // 使用mktime计算两个时间点之间的差异
printf("日期 %d/%02d/%02d 是 %d 年的第 %d 天\n", year, month, day, year, days_since_epoch + 1); // 加1是因为包括当天
}
return 0;
}
```
**Sample Input**:
```
2023/01/01
2023/02/28
2022/12/31
```
**Sample Output**:
```
日期 2023/01/01 是 2023 年的第 1 天
日期 2023/02/28 是 2023 年的第 59 天
日期 2022/12/31 是 2022 年的第 365 天
```
阅读全文