要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

本题要求编写程序,计算序列 1 - 1/4 + 1/7 - 1/10 + ... 的前N项之和。

输入格式:
输入在一行中给出一个正整数N。

输出格式:
在一行中按照“sum = S”的格式输出部分和的值S,精确到小数点后三位。题目保证计算结果不超过双精.
#include<stdio.h>
int main(){
int n,i,a=1;
double sum=0,m;
scanf("%d",&n);
for(i=0;i<n;i++){
m=1.0/a;
a+=3;
a=-a;
sum=sum+m;
}
printf("sum = %.3f",sum);
return 0;
}
什么地方错了?

增加一个变量,用于取反,即可。

#include<stdio.h>

int main(){

int n,i,flag=1;

double sum=0;

printf("请输入数字n:");

scanf("%d",&n);

for(i=1;i<=n;i++,flag*=-1){

sum+=1.0/(3*i-2)*flag;}

printf("sun=%.3f\n",sum);

return 0;

}

扩展资料:

ln(1+x) = x - x^2/2 + x^3/3 - ...

Euler(欧拉)在1734年,利用Newton的成果,首先获得了调和级数有限多项和的值。结果是:

1+1/2+1/3+1/4+...+1/n= ln(n+1)+r(r为常量)

证明是这样的:

根据Newton的幂级数有:

ln(1+1/x) = 1/x - 1/2x^2 + 1/3x^3 - ...

于是:

1/x = ln((x+1)/x) + 1/2x^2 - 1/3x^3 + ...

代入x=1,2,...,n,就给出:

1/1 = ln(2) + 1/2 - 1/3 + 1/4 -1/5 + ...

1/2 = ln(3/2) + 1/2*4 - 1/3*8 + 1/4*16 - ...

参考资料来源:百度百科-调和级数

温馨提示:内容为网友见解,仅供参考
第1个回答  2020-01-28

增加一个变量,用于取反,即可。

本回答被网友采纳
相似回答