用C语言实现输入在一行中给出出生年月,为一个6位或者4位的数,题目保证是1000年1月到2021年12月之间的合法年月,要求输出在一行中按照标准格式年年年年-月月将输出的信息整理
时间: 2024-12-12 14:19:20 浏览: 7
在C语言中,我们可以使用`scanf`读取输入的四位或六位数字,然后根据月份范围进行检查并格式化输出。下面是一个简单的实现例子:
```c
#include <stdio.h>
int main() {
char input[7]; // 存储最多6位的日期,包括'-'
scanf("%s", input); // 输入整个字符串
// 分割年份和月份
char year[5] = {input[0], input[1], input[2], input[3], '\0'};
char month[3] = {input[4], input[5], '\0'};
// 确保输入的是有效的四位数或六位数年份
if (strlen(year) == 4 && !strchr(year, '-')) {
int y = atoi(year);
if (y >= 1000 && y <= 2021) {
// 格式化输出
printf("%s-%s", year, month);
} else {
printf("输入的年份不在有效范围内!\n");
}
} else if (strlen(year) == 6 && strchr(year, '-')) {
int y = atoi(year + 2); // 跳过前两位表示世纪
int m = atoi(month);
if (y >= 1900 && y <= 2021 && m >= 1 && m <= 12) {
printf("%s-%s", year, month);
} else {
printf("输入的年份或月份不在有效范围内!\n");
}
} else {
printf("输入格式错误!\n");
}
return 0;
}
阅读全文