【C#入門】配列に値を入力して合計を求める — 「箱が並ぶ」イメージで理解する
プログラミングでは、複数の値をまとめて扱いたい場面が頻繁にあります。
例えば:
- 10人のテスト点数
- 30日の気温
- プレイヤーのスコア一覧
このような場合に使うのが 配列(array) です。
今回は配列を使って
10個の数値を入力し、その合計を求める
というプログラムを通して理解を深めます。
サンプルコード
// 配列に10個の点数を入力して合計を求める
// ① 配列を用意(10人分の箱)
var scores = new int[10];
// ② 値を入力して格納
for (var i = 0; i < scores.Length; i++)
{
Console.Write($"{i + 1}人目の点数を入力: ");
var line = Console.ReadLine();
var number = int.Parse(line);
scores[i] = number; // 配列に保存
}
// ③ 合計計算
var total = 0;
for (var i = 0; i < scores.Length; i++)
{
total += scores[i];
}
// ④ 表示
Console.WriteLine($"合計: {total}");
配列とは何か(超重要)
配列は一言でいうと
同じ型の値を並べて入れておく箱
イメージ:
scores
┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
│ │ │ │ │ │ │ │ │ │ │
└───┴───┴───┴───┴───┴───┴───┴───┴───┴───┘
0 1 2 3 4 5 6 7 8 9
特徴:
- 同じ型のみ入る(今回は int)
- 順番がある
- 番号(添字)でアクセスする
この番号を インデックス(添字) と呼びます。
重要:
添字は 0 から始まる
ここは必ず押さえるポイントです。
コード解説
① 配列を用意
var scores = new int[10];
意味:
- int型の配列
- 要素数10個
つまり
intの箱を10個並べて用意
まだ値は入っていません。
② 値を入力して格納
for (var i = 0; i < scores.Length; i++)
ここで登場するのが重要な書き方
scores.Length
これは
配列の要素数
を意味します。
今回は10ですが、
10 と直接書かない
ことが重要です。
理由:
- 配列サイズを変えても修正不要
- 実務コードの基本
格納部分
scores[i] = number;
意味:
i番目の箱に値を入れる
例:
scores[0] に 75
scores[1] に 60
scores[2] に 90
このように保存されていきます。
なぜ一度配列に保存するのか
鋭い疑問として出てきます。
合計だけならこう書けます:
total += number;
配列不要です。
ではなぜ配列?
理由:
後から再利用できる
例えば:
- 平均を出す
- 最大値を出す
- 並び替え
- グラフ表示
- データ保存
つまり
データを保持するため
これが配列の本質です。
③ 合計計算
total += scores[i];
これは
total = total + scores[i]
の省略形です。
動き:
1回目
total = 0 + scores[0]
2回目
total = 前回結果 + scores[1]
…
繰り返して合計が作られます。
④ 表示
Console.WriteLine($"合計: {total}");
これまで学んだ文字列補間です。
実行例:入力した整数により違います
合計: 678
初学者がつまずくポイント
添字0スタート
ほぼ全員一度混乱します
正常です
Length の意味
数字直書きとの差を理解するまで時間がかかる
これも正常
Parse例外
数字以外入力で停止
→ 後の入力チェック学習につながる
学習理解を深める練習課題
課題1
平均値を出してみよう
ヒント:
合計 ÷ 個数
var scores = new int[10];
for (var i = 0; i < scores.Length; i++)
{
Console.Write($"{i + 1}人目の点数を入力: ");
var line = Console.ReadLine();
scores[i] = int.Parse(line);
}
var total = 0;
for (var i = 0; i < scores.Length; i++)
{
total += scores[i];
}
var average = (double)total / scores.Length;
Console.WriteLine($"合計: {total}");
Console.WriteLine($"平均: {average}");
解説ポイント
■ double キャスト
(double)total
整数割り算防止のため。
例:
7 / 2 = 3 ← int
7 / 2 = 3.5 ← double
ここは重要な学習ポイントになります。
課題2
最大値を求めよう
(配列理解が一段深まります)
var scores = new int[10];
for (var i = 0; i < scores.Length; i++)
{
Console.Write($"{i + 1}人目の点数を入力: ");
scores[i] = int.Parse(Console.ReadLine());
}
// 最初の値を最大値として仮定
var max = scores[0];
for (var i = 1; i < scores.Length; i++)
{
if (scores[i] > max)
{
max = scores[i];
}
}
Console.WriteLine($"最大値: {max}");
解説ポイント(非常に重要)
なぜ scores[0] から始めるのか
最大値の初期値が必要。
0 にすると負数入力で壊れる
よって
最初のデータを基準にする
これはアルゴリズム基礎として極めて重要です。
(基本情報試験レベル直結)
課題3
人数を5人に変更してみよう
どこを直せば良いか考える
変更箇所はここだけ:
var scores = new int[5];
それ以外は一切変更不要。
なぜなら
scores.Length
を使用しているため。
学習ポイント(超重要)
これが
■ ハードコーディング回避
10 を直接書かない設計
実務コードの基本思想です。
ここを理解できると一段レベルが上がります。
まとめ
今回の重要ポイント
- 配列は複数の値を保持する箱
- 添字は0から始まる
- Lengthでサイズ取得
- ループと配列はセットで使う
そして最も重要なのは
配列は「後から使うために保存する仕組み」
ここを理解できれば大きく前進です。






ディスカッション
コメント一覧
まだ、コメントがありません