記事ディレクトリ
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;
}