调用函数时出错

时间:2013-03-08 06:45:13

标签: c function

在终端中编译此代码时,我收到错误消息:

newfile1.c:17: error: conflicting types for ‘average’
newfile1.c:2: note: previous declaration of ‘average’ was here

我没有看到代码有什么问题。有人可以帮助我吗?

enter code here
#include<stdio.h>
float average(float);
int main()
{
        float marks[4],avg;
        int i;
        printf("Please enter your marks\n");
        for(i=0;i<=3;i++)
        {
                scanf("%d",&marks[i]);
        }
        avg = average(marks[4]);
        printf("The average marks value is %f",avg);
        return 0;
}



float average(float a[4])
{
       int i,sum;
       float avg_m;
       for(i=0;i<=3;i++)
       {
               sum=sum+a[i];
       }
       avg_m=sum/3;
       return avg_m;
}

5 个答案:

答案 0 :(得分:9)

替换

float average(float);

float average(float[]);

函数声明和定义不匹配。

然后调用这个函数:

avg = average(marks);

答案 1 :(得分:2)

更改文件中的行

float average(float);

float average(float []);

您已声明该函数需要一个float而不是floats数组。

此外,在main中调用它时,请更改为

avg = average(marks);

答案 2 :(得分:1)

float average(float);

需要一个float变量。你需要传递一个数组,所以添加  float average(float[]);。由于您的函数声明和定义不匹配,因此发生错误。

在你的主要内容中,你应该调用avg = average(marks);将数组传递给函数avg = average(marks[4]);将传递一个变量。

答案 3 :(得分:1)

average的原型中,您已将float作为参数类型,因此编译器期望将单个浮点值作为参数。如果要传递一组值,则必须按如下方式声明原型:

float average(float input_marks[]);

您不能在原型或定义中给出数组参数的长度。您必须将数组长度作为单独的参数传递。所以你的原型应该看起来像

float average(float a[], int a_length);

答案 4 :(得分:0)

您的函数average一个 float作为参数,因此声明应为floa avaerage(float)。如果你做float average(float a[4]),你告诉编译器你的函数采用4个浮点数作为参数。