読み込み中...

C言語入門!偶数と奇数の判定法10選

初心者がC言語で偶数と奇数を判定する10の方法 C言語
この記事は約9分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

プログラミングを学ぶ際、数値を扱う基本的なテクニックとして偶数と奇数の判定は避けて通れないスキルです。

特にC言語はその基本的な機能のひとつとして偶数と奇数の判定があります。

この記事では、C言語を使って偶数と奇数を判定する10の方法を具体的なサンプルコードとともに解説します。

それぞれの方法について、具体的なコードの書き方だけでなく、その背後にあるロジックについても理解を深めることができます。

●C言語とは

C言語は、ハードウェア制御からゲーム開発まで幅広い用途に使用される汎用性の高いプログラミング言語です。

そのため、初心者が学ぶには最適な言語であり、偶数と奇数の判定を行う方法も多数あります。

●偶数と奇数の判定とは

数値が偶数であるか奇数であるかを判定する処理は、プログラミングの基本中の基本です。

特にC言語では、この判定を行う方法が複数存在します。

○偶数の特徴

偶数は2で割り切れる整数を指します。

つまり、ある数を2で割ったときの余りが0であれば、その数は偶数と判定できます。

○奇数の特徴

奇数は2で割ったときに余りが1になる整数を指します。

つまり、ある数を2で割ったときの余りが1であれば、その数は奇数と判定できます。

●C言語における偶数と奇数の判定法

○サンプルコード1:基本的な判定方法

C言語で偶数と奇数を判定する基本的な方法を紹介します。

このコードでは、変数numに格納された数値が偶数であるか奇数であるかを判定し、結果を表示します。

#include <stdio.h>

int main() {
    int num = 10;  // 判定する数値

    if(num % 2 == 0) {
        printf("%dは偶数です\n", num);
    } else {
        printf("%dは奇数です\n", num);
    }

    return 0;
}

上記のコードは、numが偶数である場合、”は偶数です”と出力します。

逆に、numが奇数である場合、”は奇数です”と出力します。これは、if文という条件分岐を使っています。

numを2で割った余りが0なら偶数、それ以外(つまり余りが1)なら奇数と判断しています。

このコードを実行すると、”10は偶数です”と表示されます。

○サンプルコード2:条件演算子を使った方法

次に、条件演算子を使って偶数と奇数を判定する方法を見ていきましょう。

この例では、条件演算子(?:)を使って一行で結果を出力します。

#include <stdio.h>

int main() {
    int num = 11;

    printf("%dは%sです\n", num, (num % 2 == 0) ? "偶数" : "奇数");

    return 0;
}

このコードでは条件演算子を使っています。numを2で割った余りが0なら”偶数”を、それ以外なら”奇数”を結果として出力します。

条件演算子は if-else文を短く書くことができるので、コードをすっきりさせるのに役立ちます。

このコードを実行すると、”11は奇数です”と表示されます。

○サンプルコード3:関数を用いた方法

さらに、偶数か奇数かを判定する関数を定義する方法もあります。

この例では、isEven関数を作成し、引数が偶数なら1(真)、奇数なら0(偽)を返します。

#include <stdio.h>

// 偶数なら1を、奇数なら0を返す関数
int isEven(int num) {
    return num % 2 == 0;
}

int main() {
    int num = 12;

    if (isEven(num)) {
        printf("%dは偶数です\n", num);
    } else {
        printf("%dは奇数です\n", num);
    }

    return 0;
}

このコードでは、isEven関数を定義しています。

その中で、引数numが偶数か奇数かを判断し、その結果を返します。

main関数では、isEven関数の結果を元にメッセージを出力します。

このコードを実行すると、”12は偶数です”と表示されます。

○サンプルコード4:ビット演算を使った方法

C言語ではビット演算を利用することで、偶数か奇数かを簡単に判定できます。

この方法は、パフォーマンスが要求される場合に有効な手段です。

#include <stdio.h>

int main() {
    int num = 13;

    if ((num & 1) == 0) {
        printf("%dは偶数です\n", num);
    } else {
        printf("%dは奇数です\n", num);
    }

    return 0;
}

このコードではビット演算子&を使用しています。

これはビット単位でのAND演算を行います。

整数numの最下位ビット(一番右側のビット)が1かどうかを確認することで、偶数か奇数かを判定します。

このコードを実行すると、”13は奇数です”と表示されます。

●偶数と奇数の判定法の応用例

偶数と奇数の判定法は、さまざまなシーンで応用することができます。

ここからはその一例を見ていきましょう。

○サンプルコード5:数列の偶数と奇数の分け方

ある数列が与えられたとき、その中から偶数と奇数を分ける処理を行うコードを紹介します。

この例では、配列に格納された10個の整数から偶数と奇数を分け、それぞれの数を出力します。

#include <stdio.h>

int main() {
    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 数列
    int i;

    printf("偶数:");
    for (i = 0; i < 10; i++) {
        if (array[i] % 2 == 0) {
            printf("%d ", array[i]);
        }
    }

    printf("\n奇数:");
    for (i = 0; i < 10; i++) {
        if (array[i] % 2 != 0) {
            printf("%d ", array[i]);
        }
    }

    return 0;
}

このコードでは、for文を使って配列の各要素に対して偶数・奇数の判定を行います。

偶数のときはそのまま出力し、奇数のときは次の要素に移ります。

そして奇数の出力も同様に行います。

このコードを実行すると、次のように出力されます。

偶数:2 4 6 8 10 
奇数:1 3 5 7 9 

○サンプルコード6:偶数と奇数の計算処理

次に、数列の中から偶数と奇数を分けてそれぞれの合計を計算する処理を行うコードを紹介します。

#include <stdio.h>

int main() {
    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 数列
    int i;
    int sumEven = 0, sumOdd = 0;  // 偶数と奇数の合計を保存する変数

    for (i = 0; i < 10; i++) {
        if (array[i] % 2 == 0) {
            sumEven += array[i];
        } else {
            sumOdd += array[i];
        }
    }

    printf("偶数の合計:%d\n", sumEven);
    printf("奇数の合計:%d\n", sumOdd);

    return 0;
}

このコードでは、配列の要素を一つずつ取り出し、偶数ならsumEvenに、奇数ならsumOddに追加していきます。

その結果、偶数と奇数の合計が求められます。

このコードを実行すると、次のように出力されます。

偶数の合計:30
奇数の合計:25

○サンプルコード7:配列の中の偶数と奇数の判定

最後に、配列の中に偶数と奇数がいくつ存在するかを数えるプログラムを紹介します。

#include <stdio.h>

int main() {
    int array[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};  // 数列
    int i;
    int countEven = 0, countOdd = 0;  // 偶数と奇数の数を保存する変数

    for (i = 0; i < 10; i++) {
        if (array[i] % 2 == 0) {
            countEven++;
        } else {
            countOdd++;
        }
    }

    printf("偶数の数:%d\n", countEven);
    printf("奇数の数:%d\n", countOdd);

    return 0;
}

このコードでは、配列の要素を一つずつ取り出し、その要素が偶数ならcountEvenを1増やし、奇数ならcountOddを1増やします。

このコードを実行すると、次のように出力されます。

偶数の数:5
奇数の数:5

●注意点と対策

C言語で偶数と奇数の判定を行う際、主に使われる%演算子ですが、ゼロ除算に注意が必要です。

つまり、割る数が0になるとプログラムはエラーを出します。

そのため、入力値が0である可能性がある場合は、それを考慮に入れたコードを書く必要があります。

また、ビット演算を使った偶数・奇数判定は、整数の最下位ビットが1であれば奇数、0であれば偶数となります。

しかし、この方法は整数にしか適用できないため、小数に対しては使用できません。

●カスタマイズの方法

偶数と奇数の判定を活用すると、更に多くの応用が可能です。

例えば、偶数だけを逆順に表示するプログラムや、奇数だけを2倍にした結果を表示するプログラムなど、様々なカスタマイズが考えられます。

これらのプログラムは、既述の偶数・奇数判定の方法を基礎として、独自のロジックを追加することで実現できます。

自身の目的に応じて、これらのコードをカスタマイズし、自分だけのプログラムを作成してみてください。

まとめ

この記事では、C言語での偶数と奇数の判定方法について詳しく解説しました。

様々な方法で偶数と奇数を判定し、その応用例を見てきました。これらの知識を身につけることで、プログラミングの幅が広がります。

また、注意点や対策、さらにはカスタマイズの方法についても説明しました。

これらを踏まえた上で、自分だけのプログラムを作成する際に役立ててください。

最後に、これらのコードを理解し、自分のプログラムに活用することで、より良いプログラミングスキルを身につけることができるでしょう。

是非、日々のプログラミング学習に役立ててください。