Cプログラミング
 Computer >> コンピューター >  >> プログラミング >> Cプログラミング

C言語で特定の年がうるう年かどうかを判定するプログラム


うるう年は366日、平年は365日です。本記事では、C言語を用いて、指定された年がうるう年かどうかを判定するプログラムを紹介します。

うるう年の判定には、グレゴリオ暦における次の3つのルールが用いられます。

  • 4で割り切れる年はうるう年である
  • ただし、100で割り切れる年は平年である
  • ただし、400で割り切れる年はうるう年である

なお、「4または400で割り切れる年はすべてうるう年」という単純な判定では、1900年や2100年のように「100で割り切れるが400では割り切れない年」を誤ってうるう年と扱ってしまうため、正確な判定には上記の3条件を組み合わせる必要があります。

実行例

入力: year = 2000
出力: 2000 is a Leap Year

入力: year = 101
出力: 101 is not a Leap Year

アルゴリズム

開始
ステップ1: 年がうるう年かどうかを判定してbool値を返す関数を宣言する
bool check(int year)
    IF (year % 4 == 0 AND year % 100 != 0) OR year % 400 == 0
        return true
    ELSE
        return false
    END IF
ステップ2: main() 内で以下を実行する
    int year = 2000 を宣言する
    check(year) ? printf("%d is a Leap Year", year) : printf("%d is not a Leap Year", year)
    year = 101 を代入する
    check(year) ? printf("%d is a Leap Year", year) : printf("\n%d is not a Leap Year", year)
終了

C言語での実装

#include <stdio.h>
#include <stdbool.h>

// 年がうるう年かどうかを判定するbool型関数
bool check(int year){
    // 4で割り切れかつ100で割り切れない年、または400で割り切れる年はうるう年
    if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
        return true;
    else
        return false;
}

int main(){
    int year = 2000;
    check(year) ? printf("%d is a Leap Year\n", year)
                : printf("%d is not a Leap Year\n", year);

    year = 101;
    check(year) ? printf("%d is a Leap Year\n", year)
                : printf("%d is not a Leap Year\n", year);

    return 0;
}

出力結果

2000 is a Leap Year
101 is not a Leap Year

コードの解説

check() 関数は、条件式 (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0) を評価し、真であれば true を、偽であれば false を返します。これにより、世紀の境目となる年も正しく判定できます。

main() 関数では三項演算子(条件演算子)を使用し、check(year) の戻り値に応じて「うるう年である」または「うるう年でない」というメッセージを出力しています。2000年は400で割り切れるためうるう年と判定され、101年は4で割り切れないため平年と判定されます。


  1. Pythonで文字列がパングラムかどうかを判定するプログラムの作成方法

    本記事では、与えられた文字列がパングラムであるかどうかを判定するPythonプログラムの解法とアプローチについて詳しく解説します。 問題の概要 文字列入力が与えられたとき、その文字列がパングラムであるかどうかを判定するPythonプログラムを作成します。 パングラムとは? パングラムとは、英語のアルファベット26文字すべてを少なくとも1回ずつ含む文章や一連の単語のことです。有名な例として「The quick brown fox jumps over the lazy dog」があります。 解法のアプローチ この問題は、以下の手順で解くことができます。 アルファベット全体を表す基準となる文字列

  2. Pythonで与えられた数値がフィボナッチ数かどうかを判定する方法

    本記事では、与えられた数値がフィボナッチ数であるかどうかを判定する問題の解決策について解説します。 問題の定義 ある数値 n が与えられたとき、その数値がフィボナッチ数であるかどうかを判定します。 第 n 項のフィボナッチ数は、直前の2つのフィボナッチ数の和として定義されることは広く知られています。しかし、フィボナッチ数列には漸化式以外にも興味深い数学的性質があります。 フィボナッチ数の判定条件 ある数値 n がフィボナッチ数であるのは、「5×n² + 4」または「5×n² − 4」のいずれかが完全平方数であるとき、かつそのときに限る この性質を利用すれば、フィボナッチ数列を実際に生成しなくて