#include<stdio.h>
float functie(float vec[100],int dim2)
{
int j;
float suma,medie;
for(j=1;j<=dim2;j++)
{
suma=suma+vec[j];
}
medie=suma/dim2;
return medie;
}
int main()
{
int dim ,i;
float v[100],k;
printf("Introduceti dimensiunea: ");
scanf("%d",&dim);
for(i=1;i<=dim;i++)
{
printf("v[%d]= ",i);
scanf("%f",&v[i]);
}
k=functie(v[i],dim);
printf("Date de iesire: %.2f",k);
return 0;
}
我正在尝试对“暗淡”元素 vector 进行算术平均,
使用函数“functie”;但我收到此错误:
'incompatible type for argument 1 of 'functie' problema3.c /problema3.c line 23 C/C++ Problem'
错误出现在“k=functie(v[i],dim)”行。
我做错了什么?
最佳答案
这个
k=functie(v[i],dim);
使用 float 作为第一个参数调用 functie
,该 float 位于数组 v
的位置 i
处。
您的函数被声明为具有数组类型的参数(该参数衰减为指向 float 的指针)。
所以你正在将一个 float 输入到需要指针 float 的东西中。
这就是编译器告诉你的。
为了解决这个问题,您应该检查有两个非常相似的循环的原因,
main 中的一个,将一个又一个的 float 提供给 functie
,
functie
内部的一个循环遍历所有数组,但它没有得到它。
一旦你决定了要在哪里循环,你会突然发现解决类型冲突很容易。
如果不知道您想要做什么,就不可能给出解决方案代码。
您的代码还存在其他问题,这些问题不在您的问题范围内。
例如,仅举几例:
- 访问尺寸
dim
后面的数组元素,尽管这只对dim=100有效 - 由于缺乏大小检查,可能输入太大的数组
- scanf 返回值未检查
- 无法从非数字输入中恢复
关于c - 参数错误的不兼容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802848/