在终端中编译此代码时,我收到错误消息:
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;
}
答案 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个浮点数作为参数。