コース一覧
    C言語基礎 関数・配列編
    集計

    C言語基礎 関数・配列編

    C言語の関数と配列を学び、処理を分割してデータを扱うコースです。

    1
    関数
    01. 関数を定義する15分
    02. 引数と戻り値15分
    03. プロトタイプ宣言15分
    04. void関数15分
    05. 変数のスコープ15分
    06. つくる 関数に分割15分
    07. 第5章クイズ10分
    2
    配列と文字列
    01. 配列15分
    02. 配列とfor15分
    03. 集計15分
    04. 最高点と最低点15分
    05. 文字列(char配列)15分
    06. 文字列関数15分
    07. 文字列の入力15分
    08. つくる 配列で成績管理15分
    09. 第6章クイズ10分

    集計

    合計は「入れ物を先に用意する」

    配列を最後まで回せるようになったので、集計に進みます。合計を出すときの型は毎回同じです。

    c

    int total = 0;
    for (int i = 0; i < SUBJECTS; i++) {
        total += scores[i];
    }

    先に total を 0 にしておき、ループで1つずつ足していきます。これを 累積 と言います。大事なのは、total = 0; を ループの外 に書くことです。中に書くと毎回 0 に戻ってしまい、最後の1科目ぶんしか残りません。

    初期値を書かずに int total; とだけ宣言するのも駄目です。前回話したとおり、中身が何か分からない状態から足し算を始めることになり、実行するたびに違う答えが出ます。

    平均はキャストを忘れない

    第2章でやった整数どうしの割り算の罠が、ここでも出ます。

    c

    int total = 369;
    printf("%d\n", total / 5);          // 73 になる。小数が消える
    printf("%.1f\n", (double)total / 5); // 73.8

    total / 5 は int どうしの割り算なので、73.8 の小数部分が切り捨てられて 73 になります。片方を (double) にすると、もう片方も自動で double に合わせられ、小数のまま計算されます。

    表示にも注意が必要です。%f をそのまま使うと 73.800000 と小数6桁で出ます。点数の平均なら %.1f のように桁を決めて出すほうが読みやすくなります。

    途中結果を持ち回る利点

    合計を変数に持っておくと、平均だけでなく、あとから「平均より高い科目はどれか」といった処理にも使い回せます。

    c

    for (int i = 0; i < SUBJECTS; i++) {
        if (scores[i] * SUBJECTS > total) {
            printf("%d科目目は平均より上です\n", i + 1);
        }
    }

    ここでは scores[i] > total / SUBJECTS ではなく、両辺に SUBJECTS を掛けた形で比べています。割り算の切り捨てを避けるための小技で、全部 int のまま正確に比べられます。こういう書き換えができるのも、合計を捨てずに持っているおかげです。

    配列とループと累積の3つがそろうと、「データを集めて数える」というプログラムの基本形が書けるようになります。成績管理CLI もここから一気に実用的になります。

    では、5科目の合計と平均を出してみましょう。

    要件

    1. 5つの整数を配列に読み込む
    2. 合計は 合計は369点です の形で出す
    3. 平均は 平均は73.8点です の形で、小数第1位まで出す

    ヒント

    合計用の変数は 0 で初期化してから、ループの中で足していきます

    平均は (double) を付けないと切り捨てられます。書式は %.1f です

    生田 陸人
    監修生田 陸人
    ゆめさくエンジニア / 現役ソフトウェアエンジニア監修者プロフィールを見る →
    編集 ゆめさく編集部·公開 2026/08/07

    関連レッスン

    • 最高点と最低点

      比較しながら最大値と最小値を探せるようになります。

    • 文字列(char配列)

      C の文字列が終端記号付きの char 配列であることを説明できるようになります。

    • 文字列関数

      strlen と strcmp を使えるようになります。

    • 文字列の入力

      名前をあふれさせずに入力できるようになります。

    このレッスンに出てくる用語

    意味があいまいなまま進んだ語は、ここから読み直せます。

    • 配列サイズ固定の同型データの集まり
    • ループ繰り返し処理。矢印で戻すか専用記号で示す
    • instanceof「このオブジェクトの実際の型は何か」を確認 → 安全に変換
    • 変数データに名前をつけて参照する仕組み
    • 処理計算や代入を表す長方形
    main.c
    エディタを読み込んでいます

    メモ

    集計

    ⌘S で保存