閏年かどうか、常識問題として、あなたは判ってらしゃる?

4年一回、ということのようだが、正確には違う。世の中、天才プログラマと呼ばれた人たちでさえ、良く間違う。といっても、プログラマって案外常識のないひとが多い。

2000年問題やら、エクセルのバグやら、閏年にまつわるエピソードがいくらでもありそう。

さて、正しい知識とはこんなもの。下記の条件のうち、いずれかを満たす西暦年が閏年となる。
  条件1: 4で割り切れて100で割り切れない年
  条件2: 400で割り切れる年

早い話、1900, 2100年は平年だが、その間のほかの年については、4年おきと理解して正しい。いま生きているわれわれが生存している間、4年1回と思ってまず間違いない。

<関数名>
  leapYear —- 西暦年について閏年かどうかを判定

<形式>
  int leapYear(int year);

<引数>
  year 西暦年

<関数値>
  閏年であれば 1、平年(非閏年)であれば 0。

用例
  leapYear(2004);

<関数本体>
  leapYear.c

<説明>
  4の倍数でしかも100の倍数でない年、または400の倍数の年は閏年。
  1900年や2100は閏年ではない! 曜日までも自動表示と豪語するオートマチック機械時計は世界中数多くあるけど、1900年や2100年の曜日を正しく表示できるものはあるのだろうか。壊れてて、100%の確率で迎えられそうもない2100年のために、そのような時計をつくるのだろうか。とっても知りたい。
  閏年はなぜ必要なのだろうか。天文学によれば、地球が太陽を1周するのに、
    365.2422日 = 365日5時間48分46秒
  かかる。1年を365日とすると4年に約1日ずれてくる。閏年を作らねばならないわけだ。

Comments are closed.

Post Navigation