無料Wikiサービス | デモページ | [広告] サイト検索サービス Sx4
授業だけでは補えない部分に関する事のまとめ

課題4-9


 サンプルプログラム1について日本語で解説せよとの問題。

 与えられたサンプルプログラムは以下のようになっています。


#inclde <stdio.h>

 

int main() {

  int i, a[10];

  for (i = 0; i < 10; i++) a[i] = i;

  printf("%d\n", sumn(___)); /* 下線部を埋める */

  return 0;

}

 

int sumn(int data[], int n) {

  int i, sum = 0;

  for (i = 0; i < n; i++) {

    sum += data[i];

  }

  return sum;

}


 コンパイルして動かしてみようとした人は気づいたでしょうが、実はこのプログラムはそのままではコンパイルすることができません。
 プロトタイプ宣言がない関数がmain関数の後に記述されているという致命的ミスがあるからです。
 とりあえずプロトタイプ宣言 int sumn(int data[], int n); を書き込むか、関数sumnについて記述してある部分をmain関数の前に持ってくるかしましょう。


 では、すべて解説してしまっては答えになってしまうので要点だけをほんの少し解説します。
 まず、目を引くのが

printf("%d\n", sumn(___)); /* 下線部を埋める */

 という部分です。
 

 関数sumnの引数を書け、という問題であることがお分かりでしょうか?

 このプログラムで宣言されている変数は

関数main内にて   int型の変数 i と 大きさ10で名前がaの配列 a[10] 
関数sumn内にて  int型の変数 i と sum

 関数sumnの引数なのだから、関数sumn内で宣言されている関数を引数として持ってくることはできないため、自然と関数sumnの引数についての記述を見れば、答えは出てくるでしょう。

 後は、授業中にやったことの組み合わせです。
 for文による繰り返しでの代入と演算、局所関数・グローバル関数などの知識を使って残りのプログラム部分を読み解いていきましょう。

最終更新 2008/5/17 22:42:23 - black
(2008/5/17 22:41:42 作成)