题目描述
给定一个正整数n,计算1+1/2+1/3….的前n项之和。
输入要求
输入一个正整数n(n<100)。
输出要求
输出前n项之和,默认保留6位小数。
输入样例
2
输出样例
1.500000
1.方法一(for循环)
观察题目给的数列,规律为分子恒为1,分母每次加一递增(想到i++),最后相加求和,用循环实现分母的递增和对先前循环得到的每一项求和
#include<stdio.h>
int main(){
int n,i;
double s=0;
scanf("%d",&n);
for(i=1;i<=n;i++){ //注意这里定义i=1,如果i为0则不输出,因为0不能做除数(1.0/0无意义)
s+=1.0/i; //1.0/而不是1/,1/不输出小数部分
}
printf("%.6f\n",s);//保留六位小数
return 0;
}
2.方法二(while循环
#include<stdio.h>
#include<math.h>
int main() {
int n,i=1;
double a,s=0;
scanf("%d",&n);
while(i<=n)
{
a=1.0/i;
s+=a;
i=i+1;
}
printf("%.6f\n",s); //保留六位小数
return 0;
}
3.方法三(do while循环
#include<stdio.h>
#include<math.h>
int main() {
int n,i=1;
double a,s=0;
scanf("%d",&n);
do
{
a=1.0/i;
s+=a;
i=i+1;
} while(i<=n)
printf("%.6f\n",s); //保留六位小数
return 0;
}