输入正整数n,输出H(n)=1+1/2+1/3+…+1/n的值,保留3位小数。
Input
输入正整数n
Output
输出H(n)=1+1/2+1/3+…+1/n的值,保留3位小数。
Sample Input
3
Sample Output
1.833
代码:
//本题除了正整数n和main函数是int型的,其他全部都是double型!!!
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<algorithm>
using namespace std;
double H(int n)
{
double cnt=0.0;
double k;
for(double i=1;i<=n;i++) //注意这里是double i !!!如果是int i,则 1/i是整数除以整数,结果k还是一个整数、而不是浮点数
{
k=1/i;
cnt=cnt+k;
}
return cnt;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
printf("%.3lf\n",H(n));
}
return 0;
}