0

次のコードの友人は、float で平均の一部を取得しようとしています...手動で ans を分数にする必要がありますが、ここでは丸められた図になっています...助けてください。

#include <stdio.h>
#include <stdlib.h>

//finding out the average marks for students ....

float average (float []);

int main()
{
    int i;
    float total_avg=0;

    float arr_1[] = {10.2, 22.9, 36.04, 89.1, 94.1, 10.8,};

    for(i=0; i<6; i++)
             printf("%2f\n",arr_1[i]);
             printf("\n\n");


     total_avg = average (arr_1);   
     printf("Total average : %3f\n",total_avg);     


    system("PAUSE");
    return 0;

    }

float average (float a[5])
{
      int sum = 0, i;
      float total;

      for(i=0; i<6; i++)
      {
           sum = sum+a[i];
           }
     total = sum/5;

      return total;

   }
4

2 に答える 2

1

sumbash.d で指摘され たタイプを修正しても、答えはまだ間違っています。arr_1には 6 つの要素が含まれていますが、平均を計算するときに 5 で除算します。totalの計算をに変更する必要があります

total = sum/6;

または、さらに良いことに、に変更averageします

float average(float* a, int num_elems)
{
    float sum = 0
    int i;
    for(i=0; i<num_elems; i++) {
        sum += a[i];
    }
    return sum/num_elems;
}

averageのように呼び出します

total_avg = average (arr_1, sizeof(arr_1)/sizeof(arr_1[0]));
于 2013-03-08T11:21:31.213 に答える
1

int を合計として使用する理由 float代わりに使用してください:

float average (float a[5])
{

  int sum = 0,
  float total, sum = 0.0f;

  for(i=0; i<6; i++)
  {
       sum = sum+a[i];
       }
 total = sum/5;

  return total;

}    
于 2013-03-08T11:21:49.617 に答える