-1

我想使用函数打印数组中元素的平均数

这是我的尝试:

#include<stdio.h>
#include<stdlib.h>
#define MAX_SIZE 100
void avgee();
int main()
{
    int a[MAX_SIZE],n,i;
    double avg=0,sum=0;
    printf("Enter the numbers of average:");
    scanf("%d", &n);
    printf("Enter the numbers: \n");
    for(i=1;i<=n;i++)
        scanf("%d", &a[i]);
    avgee(a,n);
    return 0;
}
void avgee(int a[MAX_SIZE],int n)
{
    int i,sum,avg;
    printf("Average number is:");
    for (i=1;i<=n;i++)
    {
        sum=sum+a[i];
        avg=sum/n;
    }
    printf("%f",avg)
}

由于某种原因它不起作用,有人可以帮忙吗?

4

4 回答 4

2

函数的声明应该是void avgee(int a[MAX_SIZE],int n);,而不是void avgee();。此外,您还忘记在;之后添加printf("%f",avg)

于 2020-04-15T18:00:50.093 回答
1

对于初学者来说,函数原型应该放在 main 之前。在这种情况下,编译器可以检查函数是否被正确调用。

该函数不应输出任何消息。它应返回平均值。函数的调用者决定输出什么消息(如果有的话)。

function.should 声明如下

double average( const int a[], size_t n );

并定义为

double average( const int a[], size_t n )
{
    double sum = 0.0;

    for ( size_t i = 0; i < n; i++ )
    {
        sum += a[i];
    }

    return n == 0 ? 0.0 : sum / n;
}

注意数组的索引从 0 开始。

所以主要你应该写

printf("Enter the numbers: \n");
for( i = 0; i < n; i++ )
    scanf("%d", &a[i]);

printf( "Average number is: %f\n", average( a, n ) );

这是一个演示程序。

#include <stdio.h>

#define MAX_SIZE    100

double average( const int a[], size_t n );

int main(void) 
{
    int a[MAX_SIZE];

    size_t n = MAX_SIZE;

    printf( "Enter the numbers of average: " );
    scanf( "%zu", &n );

    if ( MAX_SIZE < n ) n = MAX_SIZE;

    printf( "Enter the numbers:\n" );

    for( size_t i = 0; i < n; i++ )
    {
        scanf( "%d", &a[i] );
    }       

    printf( "Average number is: %.1f\n", average( a, n ) );

    return 0;
}

double average( const int a[], size_t n )
{
    double sum = 0.0;

    for ( size_t i = 0; i < n; i++ )
    {
        sum += a[i];
    }

    return n == 0 ? 0.0 : sum / n;
}

它的输出可能看起来像

Enter the numbers of average: 10
Enter the numbers:
1 2 3 4 5 6 7 8 9 10
Average number is: 5.5
于 2020-04-15T18:24:45.130 回答
0

平均值avg应声明为 double as printf("%f",avg)

您的循环应该只迭代到<n场景并且计算平均值应该是在循环之外。喜欢,

avg=sum/n;
printf("%f",avg);
于 2020-04-15T17:58:54.423 回答
0

这是您的代码的工作版本

#include <stdio.h>

void avgee();

int main() {
  int n, i;
  printf("Enter the numbers of average: ");
  scanf("%d", &n);
  int a[n];
  printf("Enter the numbers: \n");
  for(i = 0;i < n; i++) {
    scanf("%d", &a[i]);
  }
  avgee(a, n);
  return 0;
}

void avgee(int a[], int n) {
  int i, sum = 0;
  for(i = 0;i < n; i++) {
    sum += a[i];
  }
  printf("Average number is: %.2f", sum * 1.0 / n);
}
于 2020-04-15T19:15:26.053 回答