使用 C 语言中的引用调用查找标准偏差、平均值和总和的程序

Program to find Standard deviation, average and sum using call by reference in C language

所以这是代码:

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

void calculateSD(float *data,float *standardDeviation, float *sum, float *average)
{
int i;

for(i=0; i<10; ++i)
{
    *sum= *sum+data[i];
}
*average = *sum/10;
for(i=0; i<10; ++i)
{
    *standardDeviation += pow(data[i] - *average, 2);   
}
*standardDeviation=*standardDeviation/10;
}
    int main()
{
int i;
float average=0.0;
float SD=0.0;
float sum=0.0;
float *standardDeviation=&SD;
float *psum=&sum;
float *paverage=&average;
float *data=(float*)calloc(5,sizeof(float));

printf("Enter 5 elements: ");
for(i=0; i < 5; ++i)
{
    scanf("%f",&data[i]);   
}
calculateSD(data,standardDeviation,psum,paverage);

printf("\nStandard Deviation = %f", SD);
printf("\nAverage= %f", average);
printf("\nSum= %f",sum);

return 0;
}

我不知道这有什么问题。我得到总和和平均值作为一些垃圾值。

StandardDeviation 为零。

我必须使用引用调用所以没有 return 语句

你的数组大小是 5

float *data=(float*)calloc(5,sizeof(float));

但是当你在函数中遍历它时,你给出的大小是 10

for(i=0; i<10; ++i)
{
    *sum= *sum+data[i];
}