今日の人気記事

  1. printf関数の変換指定子
  2. int main(void) - プログラムの基本
  3. 条件演算子(3項演算子)「? :」
  4. 入力した2つの自然数の最大公約数を求める
  5. エスケープシーケンス - 特殊文字

閏年(うるうどし)を判定する

当ページのリンクには広告が含まれています。

スポンサーリンク

閏年(うるうどし)を判定するサンプルプログラムを紹介します。

閏年

まずは閏年の定義を確認しておきましょう。

閏年といえば「4年に一度」と思われている方が多いと思いますが、少し違います(管理人は長い間、勘違いしていました……)。

正確には

  1. 西暦が「4」で割り切れる(あまりが0)年は閏年ですが
  2. 西暦が「100」で割り切れる年は閏年ではありません。
  3. ただし、西暦が「400」で割り切れる年は閏年。

です。『2. 西暦が「100」で割り切れる年は閏年ではない。』がポイントです。

そのため

1200年、1600年、2000年、2400年

閏年ですが、

1700年、1800年、1900年、2100年

は閏年ではありません。

閏年の定義を確認したら、次はサンプルプログラムをみてみましょう。

閏年の判定 - サンプルプログラム

入力した西暦が閏年かどうかを判定するサンプルプログラムです。

/*
 * C言語のサンプルプログラム - Webkaru
 * - 入力した西暦が閏年かを判断 -
 */

#include <stdio.h>

int main(void){

  /* 変数の宣言 */
  int year;

  /* 西暦の入力 */
  printf("西暦を入力してください = ");
  scanf("%d",&year);

  if(year%4 == 0) {
    if( year%100 == 0) {
      if ( year%400 == 0) {
        printf("%d年は閏年です。\n", year);
      } else {
        printf("%d年は閏年ではありません。\n", year);
      }
    } else {
      printf("%d年は閏年です。\n", year);
    }
  } else {
    printf("%d年は閏年ではありません。\n", year);
  }

  return 0;
}

実行結果

いくつかの実行結果です。

西暦を入力してください = 1192
1192年は閏年です。
西暦を入力してください = 1200
1200年は閏年です。
西暦を入力してください = 1300
1300年は閏年ではありません。
西暦を入力してください = 1900
1900年は閏年ではありません。
西暦を入力してください = 2000
2000年は閏年です。

このように適切に閏年かどうかが判定できていますね。

基本構文 の人気記事

  1. printf関数の変換指定子
  2. int main(void) - プログラムの基本
  3. 変数の値を出力 - printf 関数
  4. continue文 - ループをスキップ
  5. 条件演算子(3項演算子)「? :」
  6. while文 - 繰り返し処理
  7. エスケープシーケンス - 特殊文字
  8. else if文 - 複数の条件式 - 条件分岐
  9. 関数のプロトタイプ宣言
  10. (前置・後置)インクリメント演算子, ++

関連記事(一部広告含む)