输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。 输出格式: 在一行中按标准格式 年年年年-月月 将输入的信息整理输出。 输入样例 1: 9808 输出样例 1: 1998-08
时间: 2024-12-23 14:19:42 浏览: 4
这个题目要求我们接收一个四位或六位的字符串表示出生年月,然后按照“YYYY-MM”的格式输出。这里我们可以假设输入总是包含两位的月份(从01到12),并且可能会有四位的年份。由于日期范围是从1000年1月到2021年12月,我们需要检查输入是否在这个范围内,如果不是,则不需要转换直接输出错误信息。
下面是C语言的解决方案:
```c
#include <stdio.h>
void format_date(char input[6]) {
int year, month;
// 检查输入长度
if (strlen(input) == 4) { // 如果只有四位数,补零到六位
input[4] = '0';
input[5] = '0';
}
// 解析年月
sscanf(input, "%d%d", &year, &month);
// 检查年份是否在范围内
if (year < 1000 || year > 2021) {
printf("Invalid date.\n");
return;
}
// 格式化并输出
printf("%04d-%02d\n", year, month);
}
int main() {
char input[6];
scanf("%s", input);
format_date(input);
return 0;
}
```
阅读全文