博士「ここをチェックじゃ」

同じ変数に複数の値を入れたい場合は配列を使うんじゃ。


博士

配列とは、なんじゃな、引き出しの集まったタンスのようなもんじゃと考えればいいじゃろ。
Cでは配列には[数値]を使い、0番から始まるんじゃ。
intで整数型変数を宣言するときに[ ]をつけて個数を指定すると、その個数だけの整数型変数を作ってくれるんじゃ。


博士「ここをチェックじゃ」

例えはint タンス[5]と宣言したとすると、
[0]番から[4]番まで計5つの引き出しを用意してくれたということじゃ。


博士「×」

しつこく言っておくが[5]という引き出しは作られてないんじゃぞ!


ぷうさん「OK」

アイアイサー!


博士「Good!」

よろしい。では、プログラムじゃ

まずはタンスの引き出しに一つずつ値を入れていく方法じゃ。

実行文

#include <stdio.h>
main()
{
   int bangou;
   int goukei;
   int tansu[5];

   tansu[0]=30;
   tansu[1]=40;
   tansu[2]=10;
   tansu[3]=20;
   tansu[4]=50;
   goukei=0;

   for (bangou=0;bangou<=4;bangou=bangou+1;) {
      goukei=goukei+tansu[bangou];
      printf("bangou=%d tansu[bangou]=%d",bangou,tansu[bangou]);
      printf(" goukei=%d\n",goukei);
   }
}

6行目で変数tansuを配列で宣言、器は5個用意。

実行結果

bangou=1 tansu[bangou]=30 goukei=30
bangou=2 tansu[bangou]=40 goukei=70
bangou=3 tansu[bangou]=10 goukei=80
bangou=4 tansu[bangou]=20 goukei=100
bangou=5 tansu[bangou]=50 goukei=150

チェックポイント

困った顔の博士

タンスの引き出しの中身を一個一個指定して行くのが面倒じゃな。
下の様に一気に指定することもできるぞい。


ぷうさん「怒」

え?最初からそっちを教えてよ!


博士「怒」

何事も基本からじゃ!

同じタンスの中身は一気に宣言してコンパクトにするのじゃ。

博士

ついでに13行目のgoukeiの初期値も変数宣言と一緒に値を入れてしまおうかのう。

実行文

#include <stdio.h>
main()
{
   int bangou;
   int goukei=0;
   int tansu[5];
   tansu[]={30,40,10,20,50};

   for (bangou=0;bangou<=4;bangou=bangou+1;) {
      goukei=goukei+tansu[bangou];
      printf("bangou=%d tansu[bangou]=%d",bangou,tansu[bangou]);
      printf(" goukei=%d\n",goukei);
   }
}

実行結果

bangou=1 tansu[bangou]=30 goukei=30
bangou=2 tansu[bangou]=40 goukei=70
bangou=3 tansu[bangou]=10 goukei=80
bangou=4 tansu[bangou]=20 goukei=100
bangou=5 tansu[bangou]=50 goukei=150

博士「Good!」

どうじゃ、実行結果は同じなのにスッキリしたじゃろう!?


ぷうさん「(^^♪」

うん、整理整頓って気持ちいいよね♪








さてと、そこで問題。

博士

最大値、最小値を求めるプログラムを作ってみようかの?


困った顔のぷうさん

ゲ、ゲエエエエ・・・・


困った顔の博士

何も最初から作れとは言わん。他の人ならまだしも、お前さんじゃ・・・


困った顔のぷうさん

ヘーヘー・・どうせ私は・・・


博士「(^^♪」

まあ、そう怒りなさんなって。
それじゃ、穴埋め問題といこうかの!

問題.
実行文13、16行目のif文の( )内を埋めて最大値、最小値を求めるプログラムを完成させよう。

実行文

#include <stdio.h>
main()
{
   int data[]=[30,20,40,10,50];
   int c;
   int max;
   int min;

   max=data[0];
   max=min[0];

   for (c=0;c<=4;c=c+1;) {
      if(   /*条件式(1)*/   ) {
         max=data;
      }
      if(   /*条件式(2)*/   ) {
         min=data;
      }
      printf("max=%d min=%d",max,min);
   }
}

実行結果

max=30 min=30
max=30 min=20
max=40 min=20
max=40 min=10
max=50 min=10

回答は下の方にあります。

博士「ここをチェックじゃ」

どうじや、できたかの?簡単じゃろ?
こらっ!先に答えを見るんじゃない!!


ぷうさん「怒」

見てないってば!だってこんなのBASICでもやったって!


博士

ほう、そうかね。それでは、ぼつぼつCらしく関数といこうかの?


ぷうさん「怒」

いかんでもいい、いかんでも!!


博士「(^^♪」

Cをやる限り、そうはいかんのじゃよ!ほっほっほっ!


困った顔のぷうさん

・・・・・くそおやじ・・・

回答
条件式(1)・・・max<data
条件式(2)・・・min>data

その五 関数の基本へ

一日目 C言語の基礎 目次

零日目へ

ぷうさんの七日間戦争 一日目

二日目へ