自定义函数有关问题,求解释

自定义函数问题,求解释


#define _STDC_WANT_LIB_EXT1_1
#include <stdio.h>
#include <stdlib.h>
#define MAX_COUNT 50

double Sum (double x[],size_t n)
{
double dsum=0;
for(size_t i=0;i<n;i++)
{
dsum=dsum+x[i];
}
return dsum;
}
double average (double x[],size_t n)
{
return Sum(&x[0],n)/n;
}
size_t Getdata(double *data,size_t max_count)
{
size_t nvalues=0;
printf("How many values do you want to enter(Maximum 50)?");
scanf("%d",&nvalues);
if(nvalues>max_count)
{
printf("maximum count exceeded . %zd items will be read.",max_count);
nvalues=max_count;
}
for(size_t i=0;i<nvalues;i++)
{
scanf("%d",&data[i]);
}
return nvalues;
}

int main ()
{
double samples[MAX_COUNT]={0.0};
size_t samplecount=Getdata(samples,50);
double aaverage =average(samples,samplecount);
printf("%f",aaverage);
system("pause");
return 0;
}


运行结果总是0.000000,这是为什么,求解释。
------解决方案--------------------
引用:


#define _STDC_WANT_LIB_EXT1_1
#include <stdio.h>
#include <stdlib.h>
#define MAX_COUNT 50

double Sum (double x[],size_t n)
{
double dsum=0;
for(size_t i=0;i<n;i++)
{
dsum=dsum+x[i];
}
return dsum;
}
double average (double x[],size_t n)
{
return Sum(&x[0],n)/n;
}
size_t Getdata(double *data,size_t max_count)
{
size_t nvalues=0;
printf("How many values do you want to enter(Maximum 50)?");
scanf("%d",&nvalues);
if(nvalues>max_count)
{
printf("maximum count exceeded . %zd items will be read.",max_count);
nvalues=max_count;
}
for(size_t i=0;i<nvalues;i++)
{
scanf("%d",&data[i]);//这步改为 scanf("%lf",&data[i])即可
}
return nvalues;
}

int main ()
{
double samples[MAX_COUNT]={0.0};
size_t samplecount=Getdata(samples,50);
double aaverage =average(samples,samplecount);
printf("%f",aaverage);
system("pause");
return 0;
}


运行结果总是0.000000,这是为什么,求解释。

看代码注释,你用double型数据来保存输入的数据,因为用%d来接收是不行的!将scanf("%d",&data[i])改为scanf("%lf",&data[i])即可