Для начала прототип функции должен располагаться перед main. В этом случае компилятор может проверить, правильно ли вызвана функция.
Функция не должна выводить никаких сообщений. Он должен вернуть среднее значение. Вызывающая функция решает, какое сообщение выводить.
Функция должна быть объявлена следующим образом
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