C言語

【C言語】第2章第1回:条件分岐:if文の使い方

条件分岐は、プログラムの制御フローを変化させるための基本的な構造です。この章では、C言語のif文を用いた条件分岐の使い方を解説し、実用的な例を通じてその重要性を学びます。

1. if文とは?

if文は、指定された条件が真(true)の場合に特定の処理を実行するための制御構文です。

基本構文

if (条件式) {
    // 条件が真の場合に実行される処理
}

この構文では、条件式が真の場合にのみ、中括弧内のコードが実行されます。

2. if文の基本例

以下のプログラムは、入力された数が正の数であるかどうかを判定します。

#include <stdio.h>

int main() {
    int number;

    printf("Enter a number: ");
    scanf("%d", &number); // ユーザーから数値を入力

    // if文を使用して条件を判定
    if (number > 0) {
        printf("The number is positive.\n"); // 条件が真の場合に実行
    }

    return 0;
}

解説:

  • number > 0:入力された数が0より大きいかを判定。
  • 条件が真の場合、"The number is positive."が出力されます。
  • 条件が偽の場合、何も実行されません。

3. else文の追加

if文にelse文を追加することで、条件が偽の場合の処理を記述できます。

例:正負の判定

#include <stdio.h>

int main() {
    int number;

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

    // if-else文を使用して条件を判定
    if (number > 0) {
        printf("The number is positive.\n");
    } else {
        printf("The number is not positive.\n");
    }

    return 0;
}

解説:条件が真の場合は"The number is positive."を出力し、偽の場合は"The number is not positive."を出力します。

4. 複数の条件を判定するif-else if-else構造

ifelse ifelse構造を使用することで、複数の条件を判定できます。

例:数値が正、負、ゼロのいずれであるかを判定

#include <stdio.h>

int main() {
    int number;

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

    // if-else if-else文を使用
    if (number > 0) {
        printf("The number is positive.\n");
    } else if (number < 0) {
        printf("The number is negative.\n");
    } else {
        printf("The number is zero.\n");
    }

    return 0;
}

解説:

  • number > 0:正の数の場合に実行。
  • number < 0:負の数の場合に実行。
  • それ以外の場合、つまりnumber == 0の場合に最後のelseが実行されます。

5. 複数の条件を組み合わせる

論理演算子(&&||)を使用して複数の条件を組み合わせることができます。

例:数が0以上かつ偶数であるかを判定

#include <stdio.h>

int main() {
    int number;

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

    if (number >= 0 && number % 2 == 0) {
        printf("The number is non-negative and even.\n");
    } else {
        printf("The number does not meet the criteria.\n");
    }

    return 0;
}

このプログラムでは、数が0以上かつ偶数であるかどうかを判定します。

6. 練習問題

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

  1. 入力された数が10以上であれば「大きい」、10未満であれば「小さい」と表示するプログラムを作成してください。
  2. 入力された数が3の倍数であるかを判定するプログラムを書いてください。
  3. 2つの数を入力し、それらが等しいか、どちらが大きいかを判定するプログラムを作成してください。

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

問1の解答

#include <stdio.h>

int main() {
    int number;

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

    if (number >= 10) {
        printf("The number is large.\n");
    } else {
        printf("The number is small.\n");
    }

    return 0;
}

問2の解答

#include <stdio.h>

int main() {
    int number;

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

    if (number % 3 == 0) {
        printf("The number is a multiple of 3.\n");
    } else {
        printf("The number is not a multiple of 3.\n");
    }

    return 0;
}

問3の解答

#include <stdio.h>

int main() {
    int a, b;

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

    if (a == b) {
        printf("The numbers are equal.\n");
    } else if (a > b) {
        printf("The first number is larger.\n");
    } else {
        printf("The second number is larger.\n");
    }

    return 0;
}

8. まとめ

条件分岐は、プログラムの動作を柔軟にするための重要な仕組みです。if文を使いこなすことで、状況に応じた処理を実装できるようになります。今回学んだ内容を実際のプログラムに応用してみましょう!