C言語 PTAトピックス:7-4 2024年の日付修正

記事ディレクトリ

入力形式:

出力フォーマット:

入力サンプル:

出力例:

問題解決の手順:

問題解決コード:


Xiaoqiang はコミュニティの住民の生年月日を数えていましたが、全員が入力した誕生日の形式が統一されていないことに気付きました.たとえば、199808 と書いた人もいれば、9808 と書いた人もいました. 強迫性障害のXiaoqiangさんは、すべての人の生年月日を年年月の形式に整理するプログラムを書いてください。年の下 2 桁のみを記述する情報については、デフォルトで 22 未満のものは 20 で始まり、その他のものは 19 で始まります。

入力形式:

複数行のデータがあり、各行には 6 桁または 4 桁の数字である生年月日があり、タイトルは 1000 年 1 月から 2021 年 12 月までの法定年月であることが保証されています。

出力フォーマット:

入力情報を標準フォーマット「年-年-月-月」で1行に出力します。

入力サンプル:

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