[C言語] 偶数か奇数か判定する方法

C言語で整数が偶数か奇数かを判定するには、主にビット演算子を使用します。

具体的には、整数を2で割った余りを求めるために、%演算子を使用します。

例えば、number % 2 == 0であれば、そのnumberは偶数であり、number % 2 != 0であれば奇数です。

この方法は、整数の最下位ビットをチェックすることで、効率的に偶奇を判定できます。

ビット演算を用いる場合、number & 10であれば偶数、1であれば奇数と判定できます。

この記事でわかること
  • 剰余演算子を使った偶数と奇数の判定方法
  • if文を用いた条件分岐の実装例
  • 配列内の偶数と奇数のカウントや合計の計算方法
  • 偶数と奇数を別々の配列に分ける方法
  • 剰余演算子以外の判定方法や負の数、浮動小数点数の扱い方

目次から探す

C言語での基本的な判定方法

C言語で偶数か奇数かを判定する方法は、非常にシンプルで効率的です。

ここでは、基本的な判定方法をいくつか紹介します。

剰余演算子を使った判定

偶数か奇数かを判定する最も一般的な方法は、剰余演算子 % を使用することです。

剰余演算子は、ある数を別の数で割ったときの余りを返します。

偶数は2で割り切れる数であり、奇数は2で割ったときに余りが1になる数です。

  • 偶数: number % 2 == 0
  • 奇数: number % 2 != 0

if文を使った条件分岐

剰余演算子を使って判定した結果を、if文を用いて条件分岐させることで、偶数か奇数かを判定することができます。

以下にその基本的な構造を示します。

#include <stdio.h>
int main() {
    int number = 5; // 判定したい数値
    // 偶数か奇数かを判定
    if (number % 2 == 0) {
        printf("%d は偶数です。\n", number);
    } else {
        printf("%d は奇数です。\n", number);
    }
    return 0;
}

簡単なプログラム例

上記のif文を使った条件分岐を含むプログラムを実行すると、以下のような結果が得られます。

5 は奇数です。

このプログラムでは、変数 number に代入された値が偶数か奇数かを判定し、結果を標準出力に表示します。

number の値を変更することで、他の数値に対しても同様に判定を行うことができます。

応用例

C言語で偶数と奇数を判定する基本的な方法を理解したところで、これを応用したいくつかの例を紹介します。

これらの例は、配列を使ってより複雑な処理を行う方法を示しています。

配列内の偶数と奇数をカウントする

配列内の要素が偶数か奇数かを判定し、それぞれの数をカウントするプログラムを作成します。

#include <stdio.h>
int main() {
    int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int evenCount = 0;
    int oddCount = 0;
    int size = sizeof(numbers) / sizeof(numbers[0]);
    for (int i = 0; i < size; i++) {
        if (numbers[i] % 2 == 0) {
            evenCount++;
        } else {
            oddCount++;
        }
    }
    printf("偶数の数: %d\n", evenCount);
    printf("奇数の数: %d\n", oddCount);
    return 0;
}
偶数の数: 5
奇数の数: 5

このプログラムは、配列 numbers 内の偶数と奇数の数をそれぞれカウントし、結果を表示します。

偶数と奇数の合計を計算する

配列内の偶数と奇数の合計をそれぞれ計算するプログラムを作成します。

#include <stdio.h>
int main() {
    int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int evenSum = 0;
    int oddSum = 0;
    int size = sizeof(numbers) / sizeof(numbers[0]);
    for (int i = 0; i < size; i++) {
        if (numbers[i] % 2 == 0) {
            evenSum += numbers[i];
        } else {
            oddSum += numbers[i];
        }
    }
    printf("偶数の合計: %d\n", evenSum);
    printf("奇数の合計: %d\n", oddSum);
    return 0;
}
偶数の合計: 30
奇数の合計: 25

このプログラムは、配列 numbers 内の偶数と奇数の合計を計算し、結果を表示します。

偶数と奇数を別々の配列に分ける

配列内の偶数と奇数を別々の配列に分けるプログラムを作成します。

#include <stdio.h>
int main() {
    int numbers[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int evenNumbers[10];
    int oddNumbers[10];
    int evenIndex = 0;
    int oddIndex = 0;
    int size = sizeof(numbers) / sizeof(numbers[0]);
    for (int i = 0; i < size; i++) {
        if (numbers[i] % 2 == 0) {
            evenNumbers[evenIndex++] = numbers[i];
        } else {
            oddNumbers[oddIndex++] = numbers[i];
        }
    }
    printf("偶数: ");
    for (int i = 0; i < evenIndex; i++) {
        printf("%d ", evenNumbers[i]);
    }
    printf("\n");
    printf("奇数: ");
    for (int i = 0; i < oddIndex; i++) {
        printf("%d ", oddNumbers[i]);
    }
    printf("\n");
    return 0;
}
偶数: 2 4 6 8 10 
奇数: 1 3 5 7 9

このプログラムは、配列 numbers 内の偶数と奇数をそれぞれ evenNumbersoddNumbers に分けて格納し、結果を表示します。

よくある質問

剰余演算子以外で判定する方法はある?

剰余演算子以外で偶数と奇数を判定する方法として、ビット演算を使用することができます。

偶数は最下位ビットが0であり、奇数は最下位ビットが1であるため、ビット演算子 & を使って判定できます。

例:if (number & 1) { /* 奇数 */ } else { /* 偶数 */ }

負の数も判定できる?

はい、負の数も剰余演算子を使って判定することができます。

C言語では、負の数に対しても剰余演算子 % を使用することで、偶数か奇数かを判定できます。

負の数でも、2で割った余りが0であれば偶数、1または-1であれば奇数です。

浮動小数点数を判定することは可能?

浮動小数点数は偶数や奇数として直接判定することはできません。

整数部分のみを考慮する場合は、まず浮動小数点数を整数に変換する必要があります。

例:int integerPart = (int)floatNumber; その後、整数部分に対して偶数か奇数かを判定します。

まとめ

C言語で偶数と奇数を判定する方法は、剰余演算子やビット演算を使うことで簡単に実現できます。

配列を用いた応用例を通じて、より複雑な処理も可能であることを学びました。

これらの知識を活用して、実際のプログラミングに役立ててみてください。

  • URLをコピーしました!
目次から探す