使用 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=∑
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];
}
所以这是代码:
#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=∑
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];
}