[C言語] for文で配列に値を入力する方法

C言語では、for文を使用して配列に値を入力することができます。

配列は同じデータ型の要素を格納するためのデータ構造で、for文を使うことで効率的に各要素に値を代入できます。

通常、for文のループカウンタを配列のインデックスとして使用し、array[i] = value;のようにして値を設定します。

この方法は、配列のサイズが大きい場合や、連続した値を入力する場合に特に有用です。

この記事でわかること
  • 配列の宣言と初期化の方法
  • for文を使った配列への効率的な値の入力方法
  • 2次元配列への値の入力方法
  • ユーザーからの入力を配列に格納する方法
  • 配列の要素を条件付きで変更する方法

目次から探す

for文を使った配列への値の入力

配列の宣言と初期化

C言語で配列を使用するには、まず配列を宣言し、必要に応じて初期化します。

配列の宣言は、データ型、配列名、要素数を指定して行います。

以下に基本的な配列の宣言と初期化の例を示します。

#include <stdio.h>
int main() {
    // 整数型の配列を宣言し、初期化
    int numbers[5] = {0, 1, 2, 3, 4};
    // 配列の要素を表示
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードでは、numbersという名前の整数型の配列を宣言し、5つの要素を初期化しています。

for文を使って配列の要素を順に表示しています。

for文を使った値の入力方法

for文を使うことで、配列に効率的に値を入力することができます。

以下の例では、for文を使って配列に値を入力しています。

#include <stdio.h>
int main() {
    int numbers[5];
    // for文を使って配列に値を入力
    for (int i = 0; i < 5; i++) {
        numbers[i] = i * 2; // 各要素に2の倍数を代入
    }
    // 配列の要素を表示
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードでは、for文を使ってnumbers配列の各要素に2の倍数を代入しています。

for文を使うことで、同じ処理を繰り返し実行することができ、コードの簡潔さと可読性が向上します。

インデックスを利用した値の代入

配列の各要素にはインデックスを使ってアクセスし、値を代入することができます。

インデックスは0から始まるため、配列の最初の要素はインデックス0でアクセスします。

以下にインデックスを利用した値の代入の例を示します。

#include <stdio.h>
int main() {
    int numbers[5];
    // インデックスを利用して値を代入
    numbers[0] = 10;
    numbers[1] = 20;
    numbers[2] = 30;
    numbers[3] = 40;
    numbers[4] = 50;
    // 配列の要素を表示
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードでは、numbers配列の各要素に直接値を代入しています。

インデックスを利用することで、特定の位置にある要素にアクセスし、値を設定することができます。

応用例

2次元配列への値の入力

2次元配列は、行と列で構成される配列で、表形式のデータを扱うのに便利です。

以下の例では、for文を使って2次元配列に値を入力しています。

#include <stdio.h>
int main() {
    int matrix[3][3];
    // 2次元配列に値を入力
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            matrix[i][j] = i + j; // 各要素に行番号と列番号の和を代入
        }
    }
    // 2次元配列の要素を表示
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%d ", matrix[i][j]);
        }
        printf("\n");
    }
    return 0;
}

このコードでは、matrixという3×3の2次元配列を宣言し、for文を使って各要素に行番号と列番号の和を代入しています。

2次元配列を使うことで、複雑なデータ構造を簡単に扱うことができます。

ユーザーからの入力を配列に格納

ユーザーからの入力を配列に格納することで、動的にデータを扱うことができます。

以下の例では、ユーザーから入力された値を配列に格納しています。

#include <stdio.h>
int main() {
    int numbers[5];
    // ユーザーからの入力を配列に格納
    printf("5つの整数を入力してください:\n");
    for (int i = 0; i < 5; i++) {
        printf("numbers[%d] = ", i);
        scanf("%d", &numbers[i]);
    }
    // 配列の要素を表示
    printf("入力された整数は次の通りです:\n");
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードでは、scanf関数を使ってユーザーから5つの整数を入力し、それをnumbers配列に格納しています。

ユーザーの入力を受け取ることで、プログラムの柔軟性が向上します。

配列の要素を条件付きで変更

配列の要素を条件付きで変更することで、特定の条件に基づいてデータを操作することができます。

以下の例では、配列の要素を条件付きで変更しています。

#include <stdio.h>
int main() {
    int numbers[5] = {1, 2, 3, 4, 5};
    // 配列の要素を条件付きで変更
    for (int i = 0; i < 5; i++) {
        if (numbers[i] % 2 == 0) {
            numbers[i] *= 2; // 偶数の要素を2倍にする
        }
    }
    // 配列の要素を表示
    printf("変更後の配列の要素:\n");
    for (int i = 0; i < 5; i++) {
        printf("%d ", numbers[i]);
    }
    return 0;
}

このコードでは、numbers配列の偶数の要素を2倍にしています。

条件付きで配列の要素を変更することで、特定の条件に応じたデータの操作が可能になります。

よくある質問

for文を使わずに配列に値を入力する方法は?

for文を使わずに配列に値を入力する方法として、直接代入する方法があります。

例えば、int numbers[5] = {1, 2, 3, 4, 5};のように、配列を宣言すると同時に初期化することで、for文を使わずに値を設定できます。

また、個別に代入する場合は、numbers[0] = 1;のように各要素に直接値を代入することも可能です。

配列のサイズを動的に変更することは可能ですか?

C言語の標準的な配列は、宣言時にサイズが固定されるため、動的にサイズを変更することはできません。

しかし、mallocrealloc関数を使って動的メモリを確保することで、実質的に配列のサイズを変更することが可能です。

動的メモリを使用する場合は、メモリの管理に注意が必要です。

配列の要素数を取得する方法はありますか?

C言語では、配列の要素数を直接取得する関数はありませんが、sizeof演算子を使って配列の全体のバイト数を取得し、それを要素のバイト数で割ることで要素数を計算できます。

例:int size = sizeof(numbers) / sizeof(numbers[0]);

ただし、この方法は配列が関数の引数として渡された場合には使えないため、注意が必要です。

まとめ

この記事では、C言語におけるfor文を使った配列への値の入力方法とその応用例について詳しく解説しました。

配列の宣言と初期化、for文を使った効率的な値の入力、条件付きでの要素の変更方法など、実用的なテクニックを学びました。

これらの知識を活用して、より複雑なプログラムを作成し、C言語の理解を深めてください。

当サイトはリンクフリーです。出典元を明記していただければ、ご自由に引用していただいて構いません。

関連カテゴリーから探す

  • 繰り返し処理 (26)
  • 条件分岐 (27)
  • URLをコピーしました!
目次から探す