文章目录
小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 199808,有的人只写 9808。有强迫症的小强请你写个程序,把所有人的出生年月都整理成 年年年年-月月 格式。对于那些只写了年份后两位的信息,我们默认小于 22 都是 20 开头的,其他都是 19 开头的。
输入格式:
有多行数据,每行一个出生年月,为一个 6 位或者 4 位数,题目保证是 1000 年 1 月到 2021 年 12 月之间的合法年月。
输出格式:
在一行中按标准格式“年年年年-月月” 将输入的信息整理输出。
输入样例:
9808
0510
196711
输出样例:
1998-08
2005-10
1967-11
解题步骤:
1.判断输入日期是4位数格式还是6位数格式
2.判断输入年份是20xx年还是19xx年
if(((a[0]-48)*10+a[1]-48)<22) printf("20%c%c-%c%c\n",a[0],a[1],a[2],a[3]);
else printf("19%c%c-%c%c\n",a[0],a[1],a[2],a[3]);
注意:由于这里存储输入数据的时候使用的是字符,但是进行判断的时候使用的是数字形式,记得将字符-48转换成其对应的数字形式
解题代码:
#include <stdio.h>
#include <string.h>
int main()
{
char a[10]={};
while(~scanf("%s",a))
{
if(strlen(a)==4)
{
if(((a[0]-48)*10+a[1]-48)<22) printf("20%c%c-%c%c\n",a[0],a[1],a[2],a[3]);
else printf("19%c%c-%c%c\n",a[0],a[1],a[2],a[3]);
}
if(strlen(a)==6) printf("%c%c%c%c-%c%c\n",a[0],a[1],a[2],a[3],a[4],a[5]);
a[10]={};
}
return 0;
}