【问题描述】
设有n个数{x1,x2,..., xn},则这n个数的调和平均计算公式如下:
即所有数的倒数的和的平均值,再求倒数。编写程序,要求如下:
(1) 编写一个函数get_data(),提示用户输入不超过10个double数,用户输入以回车结束,然后读取这些数,并存入数组,返回实际读取了多少个数。
(2) 编写函数harmonic_array(),返回一个double类型数列的调和平均数。
(3) 编写main函数,其中有一个数组用于存放数据,首先调用get_data()函数来完成该数组的数据装入,然后调用harmonic_array(),最后在main函数里面打印输出结果,保留5位小数。
【输入形式】
3.1415 99.3214 65.487 6.351 888.64
【输出形式】
Please input less than 10 double numbers:3.1415 99.3214 65.487 6.351 888.64
The harmonic mean of this array is: 9.95543
【样例输入】
【样例输出】
【样例说明】
【评分标准】
#include <stdio.h>
//提取用户输入的数字 1.不超过十个2.输入回车结束
int get_data(double a[])
{
int i=0;
char ch;
printf("Please input less than 10 double numbers:");
for(i=0;i<10;i++)
{
scanf("%lf",&a[i]);
scanf("%c",&ch);
//如果有回车直接结束循环
if(ch=='\n') break;
}
printf("\n");
//返回数组存贮的个数
return i+1;
}
//计算数组调和平均值
double harmonic_array(double a[],int n)
{
int i = 0;
double sum = 0.0;
for(i=0;i<n;i++) sum+=1.0/a[i];
sum=1.0/(sum/n);
return sum;
}
int main()
{
double a[10];
int n = get_data(a);
double x = harmonic_array(a,n);
printf("The harmonic mean of this array is: %.5lf",x);
return 0;
}