我必须使用: 浮动平均值(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;
}
答案 0 :(得分:1)
您可以在x
中定义变量average
,
float y=0, x;
,不赋予其值。然后在这里:
x = x + tab[i];
您正在读取其值,而无需事先设置任何位置。由于您从未给过x
一个值,因此它的值是不确定的,读取它会导致未定义的行为,这意味着您的程序可能会打印垃圾输出。
始终初始化变量:
float y=0, x=0;