题目描述
编写程序计算并输出
s=∑k=1n1/k=1+1/2+1/3+…+1/n 的值。
要求定义并调用函数total(n)计算1+1/2+1/3+…+1/n
注意:此题的main函数如下所示:
int main(){
int n;
scanf("%d",&n);
printf("%.3lf\n",total(n));
return 0;
}
输入
正整数n,表示前n项求和
输出
s,表示前n项的和
样例输入 Copy
2
样例输出 Copy
1.500
提示
函数原型double total(int n)
1/2=0 1.0/2=0.5
代码
#include <stdio.h>
#include <math.h>
double total(int a);
int main(){
int n;
scanf("%d",&n);
printf("%.3lf\n",total(n));
return 0;
}
double total(int x){
double i,sum;
for(i=1;i<=x;i++){ //警告:此循环中i必须定义为double型,且必须定义在for循环之外,不能在里面定义(否则会出现编译出错),因为不管是float,还是double,都不能够精确的保存。
sum+=1/i; //因为该计算式中两个变量类型定义必须一致。故i也必须定义为double型。
}
return sum;
}
//标程:
#include <stdio.h>
double total(int n);
int main()
{
int n;
scanf("%d",&n);
printf("%.3lf\n",total(n));
return 0;
}
double total(int n)
{
double i,sum;
for (i=1;i<=n;i++)
{
sum+=1/i;
}
return sum;
}