关于#c语言#的问题,请各位专家解答!

半天都查不到是什么问题,有没有哪位能给我解惑一下?

#include 

double aveage(double X[10]);
int main()
{
    double score[10],AXN;
    
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%lf",&score[i]);
    }
    AXN=aveage(score,10);
    printf("%f",AXN);
}
double aveage(double X[10])
{
    double AXN=0;
    int y=0;
    
    for(y=0;y<10;y++)
    {
        AXN+=X[y];
    }
    AXN/=10;

    return AXN;
} 


  • 函数只定义了一个入参, 调用你传了两个入参:数组和长度。
  • 修改参考如下:
#include <stdio.h>
 
double aveage(double X[10], int len); // 增加 长度入参定义
int main()
{
    double score[10],AXN;
    
    int i;
    for(i=0;i<10;i++)
    {
        scanf("%lf",&score[i]);
    }
    AXN=aveage(score,10);
    printf("%lf",AXN);
}
double aveage(double X[10], int len) // 增加长度入参
{
    double AXN=0;
    int y=0;
    
    for(y=0;y<len;y++) // 使用长度判断
    {
        AXN+=X[y];
    }
    AXN/=len; // 求均值,使用长度
 
    return AXN;
}

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在函数定义和函数声明中的参数个数不一致,导致编译错误。具体来说,函数声明中的参数个数为1,而函数定义中的参数个数为2,因此编译器会提示错误。

解决方法是将函数声明中的参数个数修改为与函数定义中的参数个数一致,如下所示:

double aveage(double X[10], int n);

同时在函数调用时也需要传入数组大小,修改为:

AXN = aveage(score, 10);