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

C言語のelse ifラダー(階段状分岐)ステートメント徹底解説

else ifラダーは、複数の条件から1つを選ぶ「多方向分岐」を記述する際に最も一般的に使われる構文です。上から順に条件を評価し、最初に真となったブロックだけを実行し、残りはすべてスキップします。

基本構文

else ifラダーの基本的な書き方は以下のとおりです。

if (condition1)
stmt1;
else if (condition2)
stmt2;
- - - - -
- - - - -
else if (condition n)
stmtn;
else
stmt x;

条件1が偽であれば次の条件2へ、それも偽であればさらに次の条件へと、いずれかの条件が真になるまで順番に評価が進みます。すべての条件が偽だった場合には、最後のelseブロックが実行されます。

処理の流れ(アルゴリズム)

4つの整数の中から最大値を求めるプログラムを例に、処理の手順を整理します。

START
Step 1: int型変数を宣言する
Step 2: 実行時にa,b,c,dの値を読み込む
Step 3: i. if(a>b && a>c && a>d)
        「aが最大」であることを表示
     ii. else if(b>c && b>a && b>d)
        「bが最大」であることを表示
     iii. else if(c>d && c>a && c>b)
        「cが最大」であることを表示
     iv. else
        「dが最大」であることを表示
STOP

サンプルプログラム1:最大値を求める

以下は、else ifラダーを使って4つの整数の中から最大値を判定するCプログラムです。

#include<stdio.h>
void main (){
    int a,b,c,d;
    printf("Enter the values of a,b,c,d: ");
    scanf("%d%d%d%d",&a,&b,&c,&d);
    if(a>b && a>c && a>d){
        printf("%d is the largest",a);
    }else if(b>c && b>a && b>d){
        printf("%d is the largest",b);
    }else if(c>d && c>a && c>b){
        printf("%d is the largest",c);
    }else{
        printf("%d is the largest",d);
    }
}

実行結果

Run 1:Enter the values of a,b,c,d: 2 4 6 8
8 is the largest
Run 2: Enter the values of a,b,c,d: 23 12 56 23
56 is the largest

このように、条件式を上から順に評価していくことで、どの変数が最大値かを簡潔に判定できます。

サンプルプログラム2:成績評価の判定

続いて、学生の点数に応じて成績(グレード)を表示するプログラムを見てみましょう。点数の範囲ごとに条件を分岐させる典型的な活用例です。

#include<stdio.h>
int main(){
    int marks;
    printf("Enter the marks of a student:\n");
    scanf("%d",&marks);
    if(marks <=100 && marks >= 90)
        printf("Grade=A");
    else if(marks < 90 && marks>= 80)
        printf("Grade=B");
    else if(marks < 80 && marks >= 70)
        printf("Grade=C");
    else if(marks < 70 && marks >= 60)
        printf("Grade=D");
    else if(marks < 60 && marks > 50)
        printf("Grade=E");
    else if(marks == 50)
        printf("Grade=F");
    else if(marks < 50 && marks >= 0)
        printf("Fail");
    else
        printf("Enter a valid score between 0 and 100");
    return 0;
}

実行結果

Run 1:
Enter the marks of a student:78
Grade=C
Run 2:
Enter the marks of a student:98
Grade=A

まとめ

else ifラダーを使うことで、複数の条件を段階的に評価しながら可読性の高い多方向分岐を実現できます。最大値の判定や成績評価のように、範囲や優先順位に基づいて処理を振り分けたい場面で特に有効です。なお、条件が非常に多い場合はswitch文の利用も検討すると、さらに見通しの良いコードになることがあります。

  1. C言語の単純if文(simple if)をわかりやすく解説

    はじめにC言語における「if」キーワードは、論理条件が真(true)と評価された場合にのみ、特定の一連のステートメントを実行するために使用される、最も基本的な条件分岐です。本記事では、単純if文(simple if)の構文、動作の仕組み、そして具体的なサンプルコードを通じてその基本を解説します。構文単純if文の構文は以下の通りです。if (condition) { Statement(s); }単純if文の動作ifブロック内のステートメントは、条件が真(true)の場合にのみ実行され、偽(false)の場合は一切実行されません。条件が真のときに実行したいステートメントが1つだけである場

  2. C言語の「else ifラダー」条件文の使い方を徹底解説!基本構文から実行例まで

    else ifラダー(階段状条件分岐)とは?「else ifラダー」とは、複数の条件の中から該当するものを選んで処理を実行する、いわゆる多方向分岐を記述する際に最も一般的に使われる方法です。条件式を上から順番に評価していき、最初に真(true)となった条件に対応する処理だけが実行され、残りの分岐はすべてスキップされます。基本構文else ifラダーの基本的な書き方は以下の通りです。if (condition1) stmt1; else if (condition2) stmt2; - - - - - - - - - - else if (conditio