@ 调和平均数
N 个正数的算数平均是这些数的和除以 N,它们的调和平均是它们倒数的算数平均的倒数。本题就请你计算给定的一系列正数的调和平均值。
输入格式:
每个输入包含 1 个测试用例。每个测试用例第 1 行给出正整数 N (≤1000);第 2 行给出 N 个正数,都在区间 [0.1,100] 内。
输出格式:
在一行中输出给定数列的调和平均值,输出小数点后2位。
输入样例:
8
10 15 12.7 0.3 4 13 1 15.6
输出样例:
1.61
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int N;
N<=10000;cin>>N;
double a[1003]={0};
for(int i=0;i<N;i++)
{
cin>>a[i];
}
double sum=0;
for(int i=0;i<N;i++)
{
sum+=(1/a[i]);
}
double x;
x=sum/N;
//cout<<setprecision(3)<<1/x<<endl;此步有问题,详情请看下文
cout<<setiosflags(ios::fixed)<<setprecision(2)<<1/x<<endl;
return 0;
}
设置输出精度需要使用
#include<iomanip>
cout<<setprecision(x)<<表达式<<endl;
只有在这项设置后,setprecision才是设置小数的位数。
输出几位小数,x就为几。
在2020.12.27日,我发现我这么表示有问题,对于被误导的兄弟们 ,我表示十分抱歉,下面,我将补全这个输出精度的表示:对于setprecision(x),其表示的是输出的数字的总个数,如对于1.3333,若x设置为2的话,那么它其实输出的是1.3。而如果想控制小数点后面位数的输出的话,则必须加上setiosflags(ios::fixed)与setprecision(x)连用,此时的x才是代表小数点后的数字的个数。