echo_chenchen 2022-10-05 12:44 采纳率: 80.2%
浏览 31
已结题

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


#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;
}
  • 写回答

2条回答 默认 最新

  • lzl2040 人工智能领域新星创作者 2022-10-05 12:53
    关注

    这里错了,不是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;
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 已采纳回答 10月5日
  • 修改了问题 10月5日
  • 创建了问题 10月5日

悬赏问题

  • ¥15 TeleScan不能修改bar
  • ¥100 请问我基于逐飞库写的这个有关于mp u6050传感器的函数,为什么输出的值是固定的?
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息
  • ¥15 Spring Boot离线人脸识别
  • ¥15 使用Ant Design Pro vue的时候,使用环境变量的时候,构建报错是什么原因
  • ¥15 NRF24L01能发送但是不能接收
  • ¥15 想问一下这种情况怎么解决呢(关键词-file)