小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808
,有的人只写 9808
。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月
格式。对于那些只写了年份后两位的信息,我们默认小于 22
都是 20
开头的,其他都是 19
开头的。
输入格式:
输入在一行中给出一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。
输出格式:
在一行中按标准格式 年年年年-月月
将输入的信息整理输出。
样例-1:">样例-1:">样例-1:">输入样例 1:
9808
输出样例 1:
1998-08
输入样例 2:
0510
输出样例 2:
2005-10
输入样例 3:
196711
输出样例 3:
1967-11
问题分析
先判断输入是4位还是6位,6位的话不需要进行补全,只需要进行拆分成年与月,然后按照格式进行输出,4位需要先根据前两位求和与22比较选择前面补全为20或19,然后分别保存到y与m中,按照格式输出即可。
代码实现
#include<stdio.h>
#include<string.h>
int main(){
char s[7],y[5],m[3];
scanf("%s",s);
if(strlen(s)==4){
if((s[0]-'0')*10+s[1]-'0'<22){
y[0]='2';
y[1]='0';
}else{
y[0]='1';
y[1]='9';
}
for(int i=0;i<2;i++){
y[2+i]=s[i];
}
y[4]='\0';
m[0]=s[2];
m[1]=s[3];
m[2]='\0';
}else{
for(int i=0;i<4;i++){
y[i]=s[i];
}
y[4]='\0';
m[0]=s[4];
m[1]=s[5];
m[2]='\0';
}
printf("%s-%s",y,m);
return 0;
}