

0番目からｎ−1番めまでの要素の平均と和について出力したいのですが、やりかたがイマイチわかりません。  
１＋２＋３＋４＋・・・＋ｎのように順番に足していくプログラムの書き方は理解しているつもりなのですが、端末にランダムに数字を入力させ、その和と平均を出力させるプログラムを書く方法がわかりませんでした。  
以下のようにプログラムを入力したのですが、おそらく、sumIntArrayの部分が間違っていると思われるのと、/........./の部分に何をプログラムするべきかわかりませんでした。

[code]

    void readIntArray(int a[], int size)
    {
        int i;
        for(i=0;i<size;i=i+1) {
            printf("%d番目?",i=i+1);
            scanf("%d",&a[i]);
        }
        printf("%d",a[i]);
    }
    
    void sumIntArray(int a[], int size)
    {
    int sum,i;
    for(i=0;i<size;i=i+1) {
    sum=sum+i;
    }
    return sum;
    }
    
    int main(void)
    {
      int data[100], n, sum;
      double average;
    
      printf("n=? ");
      scanf("%d", &n);
    
      readIntArray(data, n);
    
      sum = sumIntArray(data, n);
      printf("sum = %d\n", sum);
    
    /......................./
      return 0;
    } 
    
[/code]

実行例は、次のようになれば良いです。

[code]

    $ ./a.out
    n=? 5
    0 番目? 2
    1 番目? 3
    2 番目? 5
    3 番目? 7
    4 番目? 11
    sum = 28
    average = 5.600000
    
[/code]


CC BY-SA 4.0
2019-11-04T07:00:33.390
60239
2020-09-11T02:03:30.367
2019-11-04T07:40:06.890
3060
36412
question
c
要素の平均と和を返す関数。


以下の様な点を元にプログラムを見直してください。

  * 前質問 [要素を逆順に格納する手続きについて](https://ja.stackoverflow.com/q/60235/26370) に付いた @metropolis さんのコメントと同じ内容  
`readIntArray()`関数内の`printf("%d番目?",i=i+1);`は`printf("%d番目?", i+1);`

  * `readIntArray()`関数最後の`printf("%d",a[i])`は意味不明
  * `sumIntArray()`関数の定義と処理が間違い 
    * 戻り値は`void`ではなく`int`
    * 変数`sum`を0で初期化していない
    * `for`ループ内の処理がインデックス値の加算になっているのをデータの加算に修正
  * `double`値で表現される平均を得るためには、合計値とデータ数を`double`でキャストして計算
  * `double`値を`printf()`で表示するための指定方法は、使用している参考書を見るとかWebで検索


CC BY-SA 4.0
2019-11-06T03:16:40.293
60285
2019-11-06T03:25:27.023
2019-11-06T03:25:27.023
26370
26370
60239
answer