[C言語]日付を6ケタで入力しyyyy/mm/ddで出力するプログラムを作ってみた!

tttこんにちは。Takuya.B(@TB_IQ)です。

プログラミングの技術向上の為、日常的にプログラムの作成練習に取り組んでいます。

6ケタで日付を付ける(2016年9月29日なら”160929″のように)癖がありますが、6ケタの数字を正しく表示するプログラムを作ってみましたので、ご紹介します!

6桁の数字(160930 → 2016年9月30日)と表示するプログラム

とりあえず作ってみたのはコレ!

これで出力するとこうなります。

000

あれ?ちょっと待てよ…。もしかして…。

bbb

aaa12月35日とかも表示できちゃいました…(´・ω・`) これはマズイ。

西向く侍(2,4,6,9,11月)のときは31日を入力(例:160931)したらエラーが出でるようにしたい。特に2月は28日まで、うるう年には29日を表示させるようにしたい。

そんなことを考えていたら頭の中がグチャグチャになってパニックになってしまいましたが、何とかゴリゴリしながら完成したものがこちら!!

解説

2016年13月53日のような存在しない日付が入力されたときに、6ケタの数字を入力し直したいので、while文を使っています。

ループから脱出させるために、新たに変数”Flag”を初期値0で宣言しています。if文で条件分岐させ、正しい値が入力されているときだけ変数”Flag”に1を渡してループ脱出させるようにしています。

if文中でFlagに0を再び渡していますが、そもそもif文の条件に合わなければFlagの値は0のままなので不必要です。これは念のためです。

もっとシンプルにコードを書くこともできるはずですが、わたしにはこれが精一杯でした(汗)

スポンサーリンク

まとめ