【6日でできるC言語入門】配列の演習プログラム

 配列は、多くのデータを一度に扱うためのとても便利な機能です。本章では、配列を使った各種の演習プログラムを通じて、配列の基本から応用までを実践的に学びます。
 1次元配列、2次元配列の取り扱い方や、条件による要素の抽出、九九表や集計処理など、プログラム作成力が身につく内容です。

1.配列の基本操作

1.1. 配列の全要素表示

まずは、int型の1次元配列の全要素をfor文で表示する基本例です。

サンプルプログラム1:配列a の全要素を表示

プロジェクト/ファイル名: Lesson36_1/main.c

#include <stdio.h>
int main(void) {
    int a[] = { 5, -3, 7, 4, 0, -8, 2 };
    int i;
    for (i = 0; i < 7; i++) {
        printf("%d ", a[i]);
    }
    printf("\n");
    return 0;
}

実行結果

5 -3 7 4 0 -8 2

1.2. 条件による要素の抽出

for文+if文で、特定条件を満たす要素だけを取り出して表示します。

条件例条件式表示する要素
偶数のみa[i] % 2 == 04, 0, -8, 2
正の数のみa[i] > 05, 7, 4, 2
負の数のみa[i] < 0-3, -8

サンプルプログラム2:偶数のみを表示

プロジェクト/ファイル名: Lesson36_2/main.c

#include <stdio.h>
int main(void) {
    int a[] = { 5, -3, 7, 4, 0, -8, 2 };
    int i;
    for (i = 0; i < 7; i++) {
        if (a[i] % 2 == 0) {
            printf("%d ", a[i]);
        }
    }
    printf("\n");
    return 0;
}

実行結果

4 0 -8 2

サンプルプログラム3:正の数のみを表示

プロジェクト/ファイル名: Lesson36_3/main.c

#include <stdio.h>
int main(void) {
    int a[] = { 5, -3, 7, 4, 0, -8, 2 };
    int i;
    for (i = 0; i < 7; i++) {
        if (a[i] > 0) {
            printf("%d ", a[i]);
        }
    }
    printf("\n");
    return 0;
}

実行結果

5 7 4 2

2.2次元配列を使った応用例

2.1. 九九表の作成

2次元配列を使うことで、掛け算九九の全組み合わせを表形式で管理・出力できます。

サンプルプログラム4:九九表を2次元配列で作成・表示

プロジェクト/ファイル名: Lesson36_4/main.c

#include <stdio.h>
int main(void) {
    int mult[9][9];
    int i, j;
    // 九九の計算
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            mult[i - 1][j - 1] = i * j;
        }
    }
    // 九九の表を表示
    for (i = 1; i <= 9; i++) {
        for (j = 1; j <= 9; j++) {
            printf("%dx%d=%2d  ", i, j, mult[i - 1][j - 1]);
        }
        printf("\n");
    }
    return 0;
}

実行結果

1x1= 1  1x2= 2  1x3= 3  1x4= 4  1x5= 5  1x6= 6  1x7= 7  1x8= 8  1x9= 9
2x1= 2  2x2= 4  2x3= 6  2x4= 8  2x5=10  2x6=12  2x7=14  2x8=16  2x9=18
3x1= 3  3x2= 6  3x3= 9  3x4=12  3x5=15  3x6=18  3x7=21  3x8=24  3x9=27
4x1= 4  4x2= 8  4x3=12  4x4=16  4x5=20  4x6=24  4x7=28  4x8=32  4x9=36
5x1= 5  5x2=10  5x3=15  5x4=20  5x5=25  5x6=30  5x7=35  5x8=40  5x9=45
6x1= 6  6x2=12  6x3=18  6x4=24  6x5=30  6x6=36  6x7=42  6x8=48  6x9=54
7x1= 7  7x2=14  7x3=21  7x4=28  7x5=35  7x6=42  7x7=49  7x8=56  7x9=63
8x1= 8  8x2=16  8x3=24  8x4=32  8x5=40  8x6=48  8x7=56  8x8=64  8x9=72
9x1= 9  9x2=18  9x3=27  9x4=36  9x5=45  9x6=54  9x7=63  9x8=72  9x9=81

2.2. 配列要素の集計・統計処理

求める値説明
合計sum += a[i]全要素の合計
平均sum / (double)配列要素数全要素の平均
最大値if(a[i]>max) max=a[i]最も大きい値
最小値if(a[i]<min) min=a[i]最も小さい値

サンプルプログラム5:合計・平均・最大・最小の計算

プロジェクト/ファイル名: Lesson36_5/main.c

#include <stdio.h>
int main(void) {
    int a[] = { 3, 2, 9, 8, 5, 6, 5, 4, 1 };
    int i, sum = 0, max, min;
    double avg;
    int len = sizeof(a)/sizeof(a[0]);
    max = min = a[0];
    for (i = 0; i < len; i++) {
        printf("%d ", a[i]);
        sum += a[i];
        if (a[i] > max) max = a[i];
        if (a[i] < min) min = a[i];
    }
    avg = sum / (double)len;
    printf("\n合計値:%d 平均値:%f 最大値:%d 最小値:%d\n", sum, avg, max, min);
    return 0;
}

実行結果

3 2 9 8 5 6 5 4 1 
合計値:43 平均値:4.777778 最大値:9 最小値:1

3.配列とループの演習問題

3.1. while文で繰り返し表示

プロジェクト/ファイル名: Lesson36_6/main.c

#include <stdio.h>
int main(void) {
    int i = 0;
    while (i < 6) {
        printf("Hello C!\n");
        i++;
    }
    return 0;
}

実行結果

Hello C!
Hello C!
Hello C!
Hello C!
Hello C!
Hello C!

3.2. 入力値の範囲表示(for文の応用)

プロジェクト/ファイル名: Lesson36_7/main.c

#include <stdio.h>
int main(void) {
    int x, y, min, max, i;
    printf("整数値を入力:");
    scanf("%d", &x);
    printf("整数値を入力:");
    scanf("%d", &y);
    min = (x < y) ? x : y;
    max = (x > y) ? x : y;
    for (i = min; i <= max; i++) {
        printf("%d ", i);
    }
    printf("\n");
    return 0;
}

実行結果

整数値を入力:5
整数値を入力:2
2 3 4 5

まとめ

  • 配列とfor文/while文の組み合わせで多彩な処理ができる。
  • 条件分岐や2次元配列の活用で応用力が身につく。
  • 集計・統計処理も配列で簡単に実現可能

C言語の配列操作をしっかりマスターして、実用的なプログラム作成力を養いましょう!