描述 给定一个YYYY-MM-DD格式的字符串,代表公元纪年的某一天。返回该日期是当年的第几天。 输入描述 YYYY-MM-DD格式的日期字符串,例如2020-01-02代表2020年1月2日 输出描述 输出一个整数,代表输入的日期是当年的第几天。例如: 对于输入字符串2020-01-02,输出2 对于输入字符串2020-12-31,输出366。使用C语言吗实现
时间: 2024-02-17 08:00:09 浏览: 302
去掉重复的字符串及在第一个字符串中删除在第二个字符串中出现的字符
以下是使用 C 语言实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
int main() {
char date[11];
int year, month, day;
int daysOfMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
int totalDays = 0;
printf("请输入日期(格式为YYYY-MM-DD):");
fgets(date, 11, stdin);
year = atoi(date);
month = atoi(date + 5);
day = atoi(date + 8);
// 判断是否为闰年,调整二月天数
if ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) {
daysOfMonth[1] = 29;
}
// 计算总天数
for (int i = 0; i < month - 1; i++) {
totalDays += daysOfMonth[i];
}
totalDays += day;
printf("%d\n", totalDays);
return 0;
}
```
代码思路如下:
1. 定义一个字符数组 `date` 存储输入的日期字符串。
2. 使用 `fgets()` 函数从标准输入读取字符串。
3. 使用 `atoi()` 函数将字符数组中的年、月、日转换为整数类型。
4. 定义一个整型数组 `daysOfMonth` 存储每个月的天数,初始值为平年的天数。
5. 判断是否为闰年,若是则将二月天数调整为 29 天。
6. 遍历月份,累加每个月的天数,最后加上日数即可得到当年的第几天。
7. 输出结果。
阅读全文