皆さんこんばんにちは、ユウです。
今回はC言語の配列について紹介していきたいと思います。
データの出力や、選択処理、反復処理などは過去の記事で紹介しているのでそちら方を見て下さい。
配列は同じ型のデータを並べたかたまりです。
同じ種類のデータをメモリに取り込んで処理する場合、配列と反復処理(for文等)を用いると効率良く処理が行えるようになります。
今回紹介するのは、1次元配列と2次元配列について紹介したいと思います。
これらの違いは、後に述べたいと思います。
今回もコード自体はコピペで構いません。解説を見る前に必ず、どの文がどのような意味を持っているかを予想してみてください。
また、コードは必ず書いて動かすようにして下さい。ただ、見るのだけではなく、実行結果も自分の目で見てほしいので。
それでははじめて行きたいと思います。
1次元配列
1次元配列は、箱を用意していきその箱に1つずつ数や変数を入れていきます。
実行結果
<解説>
6行目・・・配列宣言
int はデータ型で、aは配列名です。変数と同じように識別するために名前を付けます。
「[ ]」の中の数は、配列の要素数となり、データを記憶するための箱の数です。
9行目・・・キーボードからの読み込み
配列は変数のようにscanf()関数も使えます。
scanf()関数を使う際は、データ型と「&」がつくことに気をつけましょう。
10行目・・・配列の計算
配列の要素の中身は、何か指定されるまで空の状態です。
今回はaが空だったため、a[0]とaの和を入れます。
配列も変数とほぼ同じ扱いなので、何も指定することなく計算できます。
反復処理との組み合わせ
実行結果
<解説>
6行目・・・配列の宣言
配列の宣言は「[]」の中身を指定せずに、「={}」で配列の中身を決めていくことも出来ます。
この際、気をつけてほしいのはデータ型を守るということです。
int 型に設定している場合は、必ず「{}」の中身もint型で書くようにしましょう。
8~16行目・・・反復処理によって要素を昇順(小さい順)に並び替える
最初のfor文でa[ ]の4個目までの要素を繰り返します。
ここでなぜ、4個目までしか繰り返さないかというと、次のfor文でa[i]の右隣を指定しているからです。
この処理ではif文で隣り合う数を比較して昇順に並び替えています。
ですので、i=3の時、aとaが比較され並び替えが終わります。
こういった処理により、最初のfor文で4個目までの繰り返しで済むわけです。
11行目~13行目は変数の行方をたどっていくと簡単に分かるので、簡単な頭の体操だと思って確認してみてください。
2次元配列
1次元配列との違い
1次元配列では横や縦の片方に箱をを並べて、そこに要素を入れていくというイメージですが、2次元配列は横と縦に箱を並べていきます。
それではコードを書いていきます。
実行結果
<解説>
6~10行目・・・配列の2次元宣言
2次元配列の宣言は〇行△列というイメージで宣言します。
もし、コード通り5行3列だった場合、5個の塊を用意してその中にそれぞれ3つの要素を入れていきます。
1次元配列と同様に配列の中身は、必ず宣言しているデータ型に合わせるようにして下さい。
15~23行目・・・反復処理によるデータの出力
ここでは、まずprintf()関数に注目していきます。
この範囲にprintf()関数は2個ありますね。
1個目はi+1の値を出力しようとします。この意味を考えてみると、iが0~4と変動するので1~5の数を出力したいということが分かりますね。1~5を表わしたいということは、番号を意味している事になります。ここで改行を使っていないことに注目しておいて下さい。
次に、2番目のprintf()関数です。
ここではten[i][j]のiが変化せずに、jだけが変化していき出力されていることが分かります。ここでは、行は変化せず列のみ変化して横に出力されるわけです。
このようにprintf()関数を見てみるとこのコードが何をしたいのか大体のことが分かってきます。
22行目・・・3教科の平均出力
ここでは、「%f」を使い、3.0となっていることを確認して下さい。
整数型は、実数型で割られると実数型を持つという性質があります。
ですので、「%f」と記述していることに注意です。
最後に
今回は配列について紹介してきました。
配列は少しややこしいですが、マスターできるようになるとデータの処理がとても簡単になります。
ぜひ、覚えていくようにしましょう!
今回は以上になります。
最後まで読んでいただきありがとうございました!
この記事の続きは以下のリンクから飛ぶことができます。
C言語学習についてまとめている記事もあるのでそちらを見てもらえると嬉しいです。