这是我的函数,它返回数组中所有数字对的和,以及奇数的平均值。尽管由于某种原因,它输出的平均值为零。
#include <stdio.h>
int MoySom(int Tab[],float* Moyenne,int Length)
{
int S=0,C=0;
*Moyenne=0;
for(int i=0;i<Length;++i)
{
if(Tab[i] % 2 == 0)
{
S=S+Tab[i];
}
else if(Tab[i] % 2 != 0)
{
*Moyenne+=Tab[i];
++C;
}
}
*Moyenne=*Moyenne/C;
return S;
}
void main()
{
int Length,Tab[Length];
float Moyenne;
printf("Entrer la longeur de tableau: ");
scanf("%d",&Length);
for(int i=0;i<Length;++i)
{
printf("Entrer l'element %d: ",i);
scanf("%d",&Tab[i]);
}
printf("Somme est:%d\nMoyenne est: %.2f",
MoySom(Tab,&Moyenne,Length), Moyenne);
}
1条答案
按热度按时间agxfikkp1#
至少这些问题:
申报顺序错误
int Length,Tab[Length];
是垃圾。Tab[Length]
的声明正在发生,但Length
的值是不确定的。类似于下面的。在赋值
Length
后声明Tab[]
。更好的代码检查
scanf()
的返回值假定参数求值顺序
计算
Moyenne
,然后使用它。潜力/0
*Moyenne=*Moyenne/C;
可能试图除以零。更好的代码可以防止这种情况。不需要的测试
简化为