LoginSignup
2
2

More than 5 years have passed since last update.

西暦を入力して”うるう年”かどうかを判定する

Posted at

こんにちは、@Solphaです。

今回は、if文を使って閏年かどうかを判定するプログラムを書いてみたいと思います。

概要

考え方(グレゴリオ暦で閏年を判定)

  • 西暦が4で割り切れる年 ⇒ 閏年
  • 西暦が100で割り切れる年 ⇒ 平年
  • 西暦が400で割り切れる年 ⇒ 閏年

プログラム

コード

leap-year.go
package main

import "fmt"

func main() {
    var year int

    fmt.Printf("閏年かどうかを知りたい西暦を入力してください --> ")
    fmt.Scanln(&year)

    if year%4 == 0 && year%100 != 0 || year%400 == 0 {
        fmt.Println("その年は”閏年”です。")
    } else {
        fmt.Println("その年は”閏年”ではありません。")
    }
}

ここでは、閏年か否かをif文を使って判定しています。

if文の中にある&&はAND条件(日本語でいう”且つ”)、||はOR条件(日本語でいう”または”)を表し、このif文では、

  1. 4で割り切れ、かつ100で割れなければ「閏年」
  2. 4で割り切れ、かつ400で割れれば「閏年」
  3. 1と2に該当しなければ、「平年(not閏年)」

を判断して結果を表示させています。

実行結果

$ go run leap-year.go
閏年かどうかを知りたい西暦を入力してください --> 2012
その年は”閏年”です。

$ go run leap-year.go
閏年かどうかを知りたい西暦を入力してください --> 2000
その年は”閏年”です。

$ go run leap-year.go
閏年かどうかを知りたい西暦を入力してください --> 2100
その年は”閏年”ではありません。

所感

「4で割り切れるなら”閏年です”と表示させればいいな」と単純に考えてしまうと、(400の倍数を除く)100年の倍数も閏年扱いになってしまうことになるので少し考えました。

これくらいのことをすぐに考えられるようにならないといけないんだろうなと思いつつも、エラーなしで期待どおりの結果を一発で得ることができたので、そこそこ満足です。

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2