【发布时间】:2022-12-03 12:13:56
【问题描述】:
这是我的函数,它返回数组中所有对数的总和,以及奇数的平均值。尽管出于某种原因它将平均值输出为零。
#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);
}
【问题讨论】:
-
不能保证参数将按特定顺序进行评估。 Parameter evaluation order before a function calling in C
-
除非你在 windows 上,否则 main 返回一个 int。您如何看待
int Length, Tab[Length]可能的工作? -
Tab 中有多少个元素?它是在设置长度之前定义的。
-
编辑错误已修复。
-
该功能应该做什么?如果
Tab中没有奇数,则C为 0,您除以零。如果长度为负或零,则 Tab 未定义。