+ Admin +









スポンサーサイト 

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
[ --/--/-- --:-- ] スポンサー広告 | トラックバック(-) | コメント(-)

文字列と配列その1 

名前と年齢を入力会話的に行う次のプログラムを考える。

  プログラム1
   
    1 #inclube
    2 #inclube
    3 main()
    4 {
    5 char buff[20]; /*入力する領域*/
    6 int age;
    7
    8 printf("あなたの名前を教えてください");
    9 gets(buff);
    10 printf("%sさん,年齢を教えてください");
    11 gets(buff);
    12 age=atoi(buff);
    13 printf("%d歳ですね\n"
    14 "どうもありがとう\n,age); 
    15 }

   このプログラムをコンパイルし,実行すると
     
     あなたの名前を教えてください
   
   と表示されプログラムが入力待ちとなる。
   ここで"TARO"と入力すると
     
     TAROさん,年齢を教えて下さい

   と表示され再度入力待ちとなる。
   ここで,"20"と入力すると,

     20歳ですね
     どうもありがとう

   と表示されプログラムは終了する。


   このプログラムで入力を行ってるのは9行目と11行目の関数getsです。
   関数getsは,キーボードから入力した文字列を
   関数の引数である変数buffに取得するという処理を行う。

   ここで,関数getsに渡される引数buffのデータ型を確認すると,
   1つのchar型変数ではなく,char buff[20]となっている。
   これは,キーボードから入力するのは,複数文字のため1文字を
   格納するchar型変数では
   その目的が達成できない。
   そこで,char型変数を必要な数だけ連続して定義する必要がある。

1・配列(一次元配列)

  配列
  要素数・・・連続して確保したい数
  
  *配列を定義し、それを初期値を与えることが出来る。
   このとき、要素数を省略すると与えた初期値の数だけ領域が確保される。


 《配列の定義形式》
  データ型 配列名1[要素数] [,配列名2[要素数],…] ;
または
  データ型 配列名[]={初期値1,初期値2,…} ;


  1,4文字を格納するために配列strを定義する。
     char str[4];
  2,配列strを定義し、初期値としてT,A,R,Oを順に格納する。
     char str[]={T,A,R,O} ;
  3,3つの数値を格納するための配列numberを定義する。
   int number[3] ;
  4,配列numberを定義し、初期値として1,2,3を順に格納する。
     int number[]={1,2,3} ;

  *配列を定義したときのデータ型が
char型であれば、char型の配列で、
   int型であれば、int型の配列となる。

  try2のように定義すると、先頭からstrの0番目,strの1番目…と
  つけられた下図のような配列が定義され、与えられた初期値が順に格納される。
  この1つ1つの領域を要素といい、各要素のデータ型を要素型という。


  図1要素
要素

 


  配列内の要素の参照には要素番号を示す添字を用いる。
  例えば、配列strの2番目の要素はstr[2]と表す。
  また、この添字には計算式も使用が出来るが、
  計算結果が数値とならない場合には,小数点以下が切り捨てられた添字値となる。

  例
   str[2/5]→小数点以下切捨て→str[2] となる。

  *添字のことをインデックスともいう。 
  これは、配列の先頭要素から何番目であるか示す値です。

  重要
  配列の先頭要素は[0]である。
  また配列型であってもその1つ1つの要素は単純変数と同様な扱いが出来る。

  
  二次元配列
  下図の2行3列の二次元配列(配列名tbl)は,以下のように定義する。

  図2二次元配列
二次元配列

 
  初期化を行う場合,初期化を要素[0][0],[0][1],[0][2],[1][0]…
  の順に並べて記述する。
  
   int tbl[2][3]={83,75,68,79,64,81};

  二次元配列は,一次配列の配列である。したがって,上の二次元配列であれば,
  int型の要素を3つもつデータの配列と促え,下記のような初期化も出来る。
  
   int tbl[][3]={{83,75,68},
     ↑  {79,64,81}};
     要素数は省略可能

  またtbl[0]は0行目の先頭アドレス,tbl[1]は1行目の先頭アドレスを意味する。


その2へ続く
スポンサーサイト
[ 2009/06/02 13:19 ] 勉強 | TB(0) | CM(0)


コメントの投稿














管理者にだけ表示を許可する

トラックバック

この記事のトラックバックURL
http://akanec.blog60.fc2.com/tb.php/103-b2da2a6b








上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。