函数均值和stdDev const int选项卡[]。一般问题

时间:2019-01-02 02:21:20

标签: c function

我必须使用: 浮动平均值(const int tab [],int size); 浮点型stdDev(const int tab [],int size); 到C中的printf平均值和stdDev。

我的平均数有问题,我认为是const int。 当我添加const int tab [101]时,我遇到了a1错误; 那么我如何使其与const int一起工作(如果可以的话)。 如果此代码有任何问题。 任何帮助都会有所帮助。

#include<stdio.h>
#include<math.h>

float average(const int tab[], int size);
float stdDev(const int tab[], int size);

int main()
{
float ave, std;
int a1;
int j;
int tab[101];
printf("Podaj liczby: ");
for(j=0; j<=99; j++)
{
    a1 = scanf("%d", &tab[j]);

    if(a1<1)
 {
    printf("Incorrect input");
    return 1;
 }
 if(tab[0]==0)
 {
    printf("not enough data available");
    return 2;
 }
    if(tab[j]==0)
    {
        break;
    }

} 

ave = average(tab, j);
printf("%.2f\n", ave);
std = stdDev(tab, j);
printf("%.2f", std);
return 0;
}

float average(const int tab[], int size)
{
int i;
float y=0, x;

if(size<=0)
{
    return -1;
}

for(i=0; i<size; i++)
{

    x = x + tab[i];
}
y = x/size;
return y;
}
float stdDev(const int tab[], int size)
{
int i;
float y, z, z1, z2=0, z3=0;
if(size<=0)
{
    return -1;
}

y = average(tab, size);


for(i=0; i<size; i++)
{

    z = tab[i] - y;
    z1 = pow(z, 2);
    z2 = z2 + z1;
    z=0;
    z1=0;
}
z3 = sqrt(z2/size);
return z3;
}

1 个答案:

答案 0 :(得分:1)

您可以在x中定义变量average

float y=0, x;

,不赋予其值。然后在这里:

x = x + tab[i];

您正在读取其值,而无需事先设置任何位置。由于您从未给过x一个值,因此它的值是不确定的,读取它会导致未定义的行为,这意味着您的程序可能会打印垃圾输出。

始终初始化变量:

float y=0, x=0;