如何计算数组的最小值,最大值,平均值?

时间:2015-11-21 20:55:03

标签: c arrays

这是问的原始问题: 1.用户最多可输入20个数字,这些数字将存储在一个数组中。写入函数将作为输入并返回最小值,最大值和平均值。使用这些函数计算数组的最小值,最大值和平均值。

这是我所拥有的,但我不知道为什么它不起作用,有什么建议吗?

#include <stdio.h>


void arrmin(int a[],int num_elements);
void arrmax(int a[], int num_elements);
void arraver(int a[],int num_elements);

int main(void)
{
   int a[20],c,min,max;
   float avg;
   printf("Enter 20 numbers of elements in array\n");
for (c = 0; c < 20; c++)
    scanf("%d", &a[c]);

   min=max=a[0];
arrmax(a,a[20]);
   printf("Maximum value is %d\n", max);


arrmin(a,a[20]);
   printf("Minimum value is %d\n", a[20]);

  arraver(a,a[20]);
   printf("Average value is %f\n", a[20]);

   getch();
}

void arrmax(int a[], int num_elements)
{
   int i, max;
   for (i=0; i<num_elements; i++)
   {
   if (a[i]>max)
   {
        max=a[i];
   }
   }

   return(max);
}
void arrmin(int a[], int num_elements)
{
   int i, min;
   for (i=0; i<num_elements; i++)
   {
   if (a[i]<min)
   {
        min=a[i];
   }
   }

   return(min);
}

void arraver(int a[], int num_elements)

{ int sum,i;
float avg;
   sum=0;
avg=0;

   for (i=0; i<num_elements;i++)
   {
   sum=sum+a[i];
     avg=(float)sum/(i+1);
      }
return(avg);
}

1 个答案:

答案 0 :(得分:0)

你的逻辑看起来很不错,但有一些小问题。固定代码在答案的底部给出。

<强>的问题:

  1. 20传递给arrmaxarrminarraver

    的第二个参数
    • arrmax(a,a[20]);变为arrmax(a, 20)
  2. 您可能希望arr...函数返回intfloat而不是void

    • void arrmax(...)变为int arrmax(...)
    • void arraver(...)变为float arraver(...)
  3. 请务必实际使用函数返回的值

    • arrmax(a,20);变为max = arrmax(a, 20);等。
  4. 请务必在各自的功能中初始化maxmin个变量。

    • max = a[0];
    • min = a[0];
    • 现在我们可以从1到19迭代而不是0到19
  5. minaver打印机应打印minaver而不是a[20]

    • printf("Min is %d\n", a[20]);变为printf("Min is %d\n", min);
    • printf("Average is %f\n", a[20]);变为printf("Average is %f\n", aver);
  6. 固定代码:

    #include <stdio.h>
    
    int arrmin(int a[],int num_elements);
    int arrmax(int a[], int num_elements);
    float arraver(int a[],int num_elements);
    
    int main(void)
    {
       int a[20],c,min,max;
       float avg;
       printf("Enter 20 numbers of elements in array\n");
       for (c = 0; c < 20; c++)
          scanf("%d", &a[c]);
    
       max = arrmax(a,20);
       printf("Maximum value is %d\n", max);
    
       min = arrmin(a,20);
       printf("Minimum value is %d\n", min);
    
       avg = arraver(a,20);
       printf("Average value is %f\n", avg);
    
       getch();
    }
    
    int arrmax(int a[], int num_elements)
    {
       int i, max;
       max = a[0];
       for (i=1; i<num_elements; i++)
       {
          if (a[i]>max)
          {
             max=a[i];
          }
       }
    
       return(max);
    }
    
    int arrmin(int a[], int num_elements)
    {
       int i, min;
       min = a[0];
       for (i=1; i<num_elements; i++)
       {
          if (a[i]<min)
          {
             min=a[i];
          }
       }
    
       return(min);
    }
    
    float arraver(int a[], int num_elements)
    {
       int sum,i;
       float avg;
       sum=0;
       avg=0;
    
       for (i=0; i<num_elements;i++)
       {
          sum=sum+a[i];
          avg=(float)sum/(i+1);
       }
       return(avg);
    }