C言語

【C言語】第2章第2回:elseとelse ifの使い分け

elseelse ifは、条件分岐を細かく制御するための重要な構文です。この章では、それぞれの使い方や違いについて詳しく解説します。実際のプログラム例を通じて、これらの構文を効果的に使いこなす方法を学びます。

1. else文とは?

else文は、if文の条件が偽(false)の場合に実行される処理を指定します。

基本構文

if (条件式) {
    // 条件が真の場合の処理
} else {
    // 条件が偽の場合の処理
}

例:正負の判定

#include <stdio.h>

int main() {
    int number;

    printf("Enter a number: ");
    scanf("%d", &number);

    if (number >= 0) {
        printf("The number is positive or zero.\n");
    } else {
        printf("The number is negative.\n");
    }

    return 0;
}

解説:条件が真の場合は"The number is positive or zero."が出力され、偽の場合は"The number is negative."が出力されます。

2. else if文とは?

else if文は、複数の条件を連続してチェックするために使用されます。

基本構文

if (条件式1) {
    // 条件式1が真の場合の処理
} else if (条件式2) {
    // 条件式2が真の場合の処理
} else {
    // すべての条件が偽の場合の処理
}

例:数値の範囲判定

#include <stdio.h>

int main() {
    int number;

    printf("Enter a number: ");
    scanf("%d", &number);

    if (number > 0) {
        printf("The number is positive.\n");
    } else if (number == 0) {
        printf("The number is zero.\n");
    } else {
        printf("The number is negative.\n");
    }

    return 0;
}

解説:

  • 条件式1(number > 0)が真の場合、"The number is positive."が出力されます。
  • 条件式1が偽かつ条件式2(number == 0)が真の場合、"The number is zero."が出力されます。
  • すべての条件が偽の場合、"The number is negative."が出力されます。

3. elseとelse ifの違い

elseelse ifは目的が異なります:

  • else:1つの条件が偽である場合に必ず実行される処理を指定。
  • else if:複数の条件を順次チェックする際に使用。

例:比較

#include <stdio.h>

int main() {
    int score;

    printf("Enter your score: ");
    scanf("%d", &score);

    if (score >= 90) {
        printf("Grade: A\n");
    } else if (score >= 80) {
        printf("Grade: B\n");
    } else {
        printf("Grade: C or below\n");
    }

    return 0;
}

解説:このプログラムでは、複数の条件(スコアの範囲)をチェックし、適切なグレードを出力します。

4. else ifの注意点

複雑なelse if構造を使用する際には、次の点に注意してください:

  • 条件を整理し、読みやすいコードを書く。
  • 論理演算子(&&||)を適切に活用。
  • 不必要なelseelse ifを避ける。

例:論理演算子を使った条件分岐

#include <stdio.h>

int main() {
    int age;

    printf("Enter your age: ");
    scanf("%d", &age);

    if (age >= 18 && age <= 65) {
        printf("You are of working age.\n");
    } else if (age < 18) {
        printf("You are a minor.\n");
    } else {
        printf("You are retired.\n");
    }

    return 0;
}

解説:条件を効率的に組み合わせることで、コードの冗長さを削減できます。

5. 練習問題

以下の課題に挑戦して、elseelse ifの使い方を練習してください。

  1. 入力された数が偶数か奇数かを判定し、それに応じたメッセージを出力するプログラムを作成してください。
  2. ユーザーの年齢を入力し、未成年、成人、または高齢者のいずれに分類されるかを判定するプログラムを書いてください。
  3. 3つの数値を入力し、それらの最大値を出力するプログラムを作成してください。

6. 練習問題の解答と解説

問1の解答

#include <stdio.h>

int main() {
    int number;

    printf("Enter a number: ");
    scanf("%d", &number);

    if (number % 2 == 0) {
        printf("The number is even.\n");
    } else {
        printf("The number is odd.\n");
    }

    return 0;
}

問2の解答

#include <stdio.h>

int main() {
    int age;

    printf("Enter your age: ");
    scanf("%d", &age);

    if (age < 18) {
        printf("You are a minor.\n");
    } else if (age < 65) {
        printf("You are an adult.\n");
    } else {
        printf("You are a senior.\n");
    }

    return 0;
}

問3の解答

#include <stdio.h>

int main() {
    int a, b, c;

    printf("Enter three numbers: ");
    scanf("%d %d %d", &a, &b, &c);

    if (a > b && a > c) {
        printf("The largest number is %d.\n", a);
    } else if (b > c) {
        printf("The largest number is %d.\n", b);
    } else {
        printf("The largest number is %d.\n", c);
    }

    return 0;
}

7. まとめ

elseelse ifを適切に使い分けることで、プログラムの条件分岐を効率的に設計できます。練習問題を通じて理解を深め、柔軟な条件処理を実装してみましょう。