想知道哪里错了,求大于平均数的数,函数版本


#include<stdio.h>
int Average(int array[]);
int main()
{
  int i=0,j=0;
  int count=0;
  int score=0;
  int array[40];
  int average=0;
  while(scanf("%d",&score)!=EOF&&score>=0)
  {
  array[i]=score;
  i++;
  }
   average=Average(array);
   printf("%d\n",average);
  for(j=0;j<i;j++)
 {
   if(array[i]>average)
   {
    count++;
   }
 }
    printf("%d",count);


}
int Average(int array[])
{
  int i=0,ret=0,sum=0;
  while(array[i]!=0)
  {
   sum+=array[i];
   i++;
  }
  ret=(sum/i);
  return ret;
}

这里错了,不是array[i]

if(array[i]>average)
   {
    count++;
   }

应该改为

if(array[j]>average)
   {
    count++;
   }

还有计算平均值的代码有部分问题,平均值可能是浮点数,但是返回值是整型
整体代码进行了修改

 
#include<stdio.h>
double Average(int array[],int len);
int main()
{
  int i=0,j=0;
  int count=0;
  int score=0;
  int array[40];
  double average=0;
  while(scanf("%d",&score)!=EOF&&score>=0)
  {
  array[i]=score;
  i++;
  }
   average=Average(array,i);
   printf("%lf %d\n",average,i);
  for(j=0;j<i;j++)
 {
   if(array[j]>average)
   {
    count++;
   }
 }
    printf("%d",count);
}
double Average(int array[],int len)
{
  int sum=0;
  double ret;
  for(int i = 0;i < len;i++)
  {
   sum+=array[i];
  }
  ret=(sum/(1.0 * len));
  return ret;
}

array是整型数组,有不是字符数组,怎么判断不等于'\0'呢?