C言語入門(配列の考え方)

列 C言語

どうも、サンチョです!

前回までは数値を扱う変数を学びましたね。
今回は「文字を扱う変数」に触れていきましょう。

前回の練習問題の解答例

まずは前回は最後に出した練習問題の解答例です。

【問1】の答えは以下のとおりです。
① 5行目にてdouble型にint型の式の結果を代入しているため、小数点以下の値が失われている。
② 6行目のprintf関数にて、double型を表示するための変換指定子が「%d」になっているため、実数が表示されない。

【問2】の答えは以下の通りです。
・5行目の式をdoubleでキャストする。
・6行目の変換指定子を「%f」にする。

#include<stdio.h>
int main() {
    int num1 = 1500;
    int num2 = 2000;
    double percent = (double) num1 / num2;
    printf("%dは%dの%0.2f%%です。\n", num1, num2, percent);
}

いかがだったでしょうか?まだまだ簡単でしたかね?
では、解答例の解説はここまでにして、ここからいよいよ本題に入ります!

配列とは

配列とは、同じ型の変数を、複数まとめて扱うことのできる仕組みです。

1クラスに30人の生徒がいる学校を思い浮かべてください。
そのクラスのテストの成績を管理するプログラムを作る場合、
配列を使わなければ変数が30人分も必要になってしまいます。
これだと大変ですよね?
しかし配列を使えば、1つの変数で30人分の情報を管理できるのです!

まずは動かしてみよう

色々と仕組みを説明されても意味が分からないと思います。
まずは下記のプログラムをコピペして実行してみてください。
順を追って説明していきます。

#include<stdio.h>
int main() {
    int array[3];
    array[0] = 1;
    array[1] = 2;
    array[2] = 3;

    printf("array[0]の値=%d\n", array[0]);
    printf("array[1]の値=%d\n", array[1]);
    printf("array[2]の値=%d\n", array[2]);
}

配列の宣言の仕方

先ほどのプログラムの3行目に書かれていたのが配列の宣言です。

int array[3];

何となく察しがついている方も多いかもしれませんが、配列を宣言する際は次のようなルールで書きます。

データ型 配列名[要素数];

配列の宣言時に初期値を代入したい場合は、次のような書き方になります。

データ型 配列名[要素数] = {値, 値, 値・・・};

配列の要素数と要素番号

先ほどのプログラムの4行目のarray[0]を見たとき、あなたはどう感じましたか?
私は初めて配列に触れたとき「(・3・)あるぇ~?」と思いました。

実はここ、初心者がとってもつまづきやすいポイントなんですよね…
というワケでもう少し丁寧に説明します。

配列の要素数とは

要素数とは配列宣言時に設定した数値です。
先ほどのプログラムで言うと array[3]3 の部分です。
配列はここに設定された数だけ要素を持ちます。
配列をマンションに見立てると要素数は部屋数のことですね。

配列の要素番号とは

配列の要素に割り当てられた番号のことです。
配列をマンションに見立てると要素番号は部屋番号です。

それぞれの要素に値を代入したり、取り出したりしたいときは要素番号を指定します。
その際は、配列の要素番号は 0 から始まるという点に注意する必要があります。

まとめると

つまり「int array[3];」という形で配列を宣言するということは、
0~2までの3つの要素をもつarrayという名の配列」を宣言しているということです。
ちょっと分かりにくい部分なので、プログラムと一緒にみてみましょう。

#include<stdio.h>
int main() {
    int array[3]; // 0~2までの3つの要素をもつarrayという配列を宣言
    array[0] = 1; // arrayの要素番号「0」に数値の「1」を代入
    array[1] = 2; // arrayの要素番号「1」に数値の「2」を代入
    array[2] = 3; // arrayの要素番号「2」に数値の「3」を代入

    printf("array[0]の値=%d\n", array[0]); // arrayの要素番号「0」が持つ値を表示
    printf("array[1]の値=%d\n", array[1]); // arrayの要素番号「1」が持つ値を表示
    printf("array[2]の値=%d\n", array[2]); // arrayの要素番号「2」が持つ値を表示
}

練習問題

【問1】
生徒5名がテストを受けたところ、それぞれ以下の点数となりました。
この5名の平均点を表示するプログラムを作成してください。
尚、平均点を表示する際は小数点以下第二位まで表示してください。

【各生徒の点数】
1人目の点数:92点
2人目の点数:83点
3人目の点数:71点
4人目の点数:40点
5人目の点数:57点

まとめ

今回は「配列」について学びました。
ここから少しずつ難しくなっていきますので、
疲れたときはゆっくり休んでくださいね!

焦らず、1つずつゆっくり学んでいきましょう。
お疲れ様でした!

コメント

タイトルとURLをコピーしました