【C言語】5つの整数から最大値を求める方法を3つ解説

C言語はプログラミング初心者でも学びやすく、基本的な構文がわかれば簡単にプログラムを書くことができます。今回は、5つの整数から最大値を求める方法を解説します。

目次

最大値を求める方法の概要

C言語で最大値を求める方法には、いくつかの方法があります。ここでは、5つの整数から最大値を求める方法について解説します。

まず、5つの整数を比較して、最初の2つの整数のうち大きい方を選択し、その結果と3番目の整数を比較します。このようにして、すべての整数を比較するまで続けます。最後に残った1つの整数が最大値となります。

また、配列を使用して5つの整数を格納し、forループを使用して配列内の要素を比較する方法もあります。この場合は、配列内で最大値が見つかった時点で処理を終了することができます。

以上が基本的な最大値を求める方法です。次節から具体的なコード例について解説します。

配列を使った最大値の求め方

配列を使った最大値の求め方

配列を使って、複数の数値から最大値を求める方法について説明します。

配列の宣言と初期化

まずは、配列の宣言と初期化方法について説明します。以下のように、int型の配列を宣言し、初期化することができます。

int numbers[5] = {10, 20, 30, 40, 50};

この場合、numbersという名前のint型の配列が宣言され、{10, 20, 30, 40, 50}で初期化されます。要素数は5です。

forループで配列内の数値を比較する方法

次に、forループを使って配列内の数値を比較して最大値を求める方法について説明します。以下は、numbers配列から最大値を求める例です。

#include <stdio.h>

int main() {
    int numbers[5] = {10, 20, 30, 40, 50};
    int max = numbers[0]; // 最大値を格納する変数maxを初期化

    for (int i = 1; i < 5; i++) {
        if (numbers[i] > max) {
            max = numbers[i];
        }
    }

    printf("最大値は%dです\n", max);

    return 0;
}

このプログラムでは、まずnumbers[0](今回は10)で変数maxを初期化します。

その後、forループでi=1から始めて、iが4以下の間繰り返し処理が行われます。if文でnumbers[i]が現在のmaxよりも大きければ、maxにその値が代入されます。これにより、ループ終了時点でmaxには最大値が格納されます。

以上がC言語で配列を使った最大値の求め方です。

if文を使った最大値の求め方

if文を使った最大値の求め方は、比較する数値が少ない場合には簡単で便利です。以下のようなコードで実現できます。

#include <stdio.h>

int main() {
    int a = 10, b = 20, c = 30, d = 40, e = 50;
    int max;

    if (a > b && a > c && a > d && a > e) {
        max = a;
    } else if (b > c && b > d && b > e) {
        max = b;
    } else if (c > d && c > e) {
        max = c;
    } else if (d > e) {
        max = d;
    } else {
        max = e;
    }

    printf("最大値は%dです。\n", max);

    return 0;
}

このコードでは、5つの整数をそれぞれ比較して、最大値を求めています。if文とelse if文を使って、条件分岐を行い、最終的にmax変数に最大値を代入しています。

ただし、比較する数値が増えるとif文やelse if文が増えてしまい、コードが長くなってしまうため基本的におすすめしません。

多くても比較する値は3つまでにしましょう。

あくまで、やろうと思ったらできるということだけ覚えておけば大丈夫です。

switch文を使った最大値の求め方

switch文を使った最大値の求め方について説明します。

まず、switch文はif文と同じように条件分岐を行う制御構造です。以下は、5つの整数から最大値を求めるプログラム例です。

#include <stdio.h>

int main() {
    int a, b, c, d, e;
    int max;

    printf("5つの整数を入力してください:\n");
    scanf("%d %d %d %d %d", &a, &b, &c, &d, &e);

    max = a;
    switch(max < b) {
        case 1:
            max = b;
        default:
            switch(max < c) {
                case 1:
                    max = c;
                default:
                    switch(max < d) {
                        case 1:
                            max = d;
                        default:
                            switch(max < e) {
                                case 1:
                                    max = e;
                            }
                    }
            }
    }

    printf("最大値は%dです。\n", max);

    return 0;
}

このプログラムでは、まず5つの整数を入力します。

その後、max変数にaの値を代入し、switch文でb,c,d,eと比較していきます。各caseでmaxよりも大きい場合にmaxにその値を代入し、defaultでは何もしないようにしています。

最後に、printf関数で最大値を表示します。

ただし、この方法は非常に可読性が低く、コードが冗長になってしまいます。if文を使った方法と同じく、やろうと思えばできるという点だけ抑えておきましょう。

目次