输入2个一维数组,分别求数组平均值解决方法

输入2个一维数组,分别求数组平均值
C/C++ code

#include <stdio.h>
#define N 5
void main()
{
    float average(float array[],int n);
    float a[N],b[N];
    int i,j;
    {
        printf("array a is:\n");
        for(i=0;i<N;i++)
        scanf("%d",&a[i]);
    }
    printf("\n");
    {
        printf("array b is:\n");
        for(j=0;j<N;j++)
        scanf("%d",&b[j]);
    }
    printf("\n");
    printf("the average of class a is %6.2f\n",average(a,N));
    printf("the average of class b is %6.2f\n",average(b,N));
}

float average(float array[],int n)
{
    int i;
    float aver,sum=array[0];
    for(i=0;i<n;i++)
        sum+=array[i];
    aver=sum/n;
    return(aver);
}




运行结果都是0
哪里错了

------解决方案--------------------
第一点错误: scanf("%d",&a[i]);改为scanf("%f",&a[i]);
第二点错误: float aver,sum=array[0];改为 float aver,sum=0;
------解决方案--------------------
C/C++ code
//用C++改写了你的程序,供参考。建议用指针处理数组吧,简单些
//可以在 scanf("%d",&b[j]); 语句循环后打印出数组的输入,看是否正常
//float aver,sum=array[0];for(i=0;i<n;i++) ===>可以改为 float aver,sum=array[0];for(i=1;i<n;i++)



#include <iostream>
#define N 5
using namespace std;

double average(double *array,int n) //建议声明为double 类型,不用float类型
{
    int i;
    double *p=array;//更新p的值,array这个数组指针不能改变值的
    double sum=*p;
    for(i=1;i<n;i++)
        sum+=*(p+i);
    return(sum/n);//返回平均值
}

int main()
{

    double a[N],b[N];
    int i,j;
    
    //输入需要计算平局数的数组
    cout<<"请输入数组a的"<<N <<"个元素"<<endl;
    for(i=0;i<N;i++) cin>>a[i];

    cout<<"请输入数组b的"<<N <<"个元素"<<endl;
    for(i=0;i<N;i++) cin>>b[i];

    cout<<"the average of class a is :"<<average(a,N)<<endl;
    cout<<"the average of class b is :"<<average(b,N)<<endl;

    return 0;
}