C语言PTA题目:7-4 2024 日期更正器

文章目录

输入格式:

输出格式:

输入样例:

输出样例:

解题步骤:

解题代码:


小强在统计一个小区里居民的出生年月,但是发现大家填写的生日格式不统一,例如有的人写 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;
}

猜你喜欢

转载自blog.csdn.net/weixin_63249578/article/details/128531458