增加一个变量,用于取反,即可。
#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-1\/4+1\/7-1\/10+...的前N项之和。
在编写程序计算序列1-1\/4+1\/7-1\/10+...的前N项之和时,一个巧妙的方法是通过设置一个取反标志。以下是一个简单的C语言实现:为了计算这个交错级数,我们可以利用一个取反变量。以下是代码示例:#include<stdio.h>intmain(){intn,i,flag=1;doublesum=0.0;printf("请输入数字n:");scanf("...
要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 + ... 的前N项之和。
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;}
C语言编程:本题要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 +...
include<stdio.h>int main(){int n,i;\/\/double sum;\/\/sum没有初始化double sum=0.0;\/\/求和,置sum为0\/\/printf("请输入数字n:",n);\/\/这句逗号后面的n是多余的,不参与输出printf("请输入数字n:");scanf("%d",&n);for(i=1;i<=n;i++){if(i%2==0)\/\/sum=sum-1\/(3*i-2)...
要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 + ... 的前N项之和?
算法上没有什么问题,我手头上没有编译器 估计你的问题出在第八行:sum=sum+1.0\/-3(3*i-2)建议改为:sum=sum-1.0\/3(3*i-2)
本题要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 + ... 的前N项和...
分析
本题要求编写程序,计算序列 1 - 1\/4 + 1\/7 - 1\/10 + ... 的前N项之...
include <stdio.h> int main(){ double s=0,d=-1.0;int a,b;scanf("%d",&a);b=(a-1)*3+1;for(int j=1; j<=b; j=j+3){ d=-d;s=d\/j+s;} printf("sum = %.3lf\\n",s);return 0;}
用C++语言写1-1\/4+1\/7-1\/10...的前n项和,请问我那里写错了?为什么我的...
item和sum不能设为int型,实数要是float。include<stdio.h> int main(void){ int n,i,flag=1;float item,sum=0;printf("Enter n");scanf("%d",&n);for(i=1;i<=n;i=i+3){ item=flag*(1.0\/i);sum=sum+item;flag=-flag;} printf("sum=%f\\n",sum);return 0;} ...
c语言编程序 \/*计算1-1\/4+1\/7-1\/10+1\/13-1\/16…共n项之和*\/
int main(void){ double n,sum,i,k;sum=0;k=1;printf("Enter n: ");scanf("%lf",&n);for(i=1;i<=n;i++){ sum=sum+k\/(3*i-2);k=-k;} printf("sum=%.3f",sum);return 0;} 输入形式 从键盘输入一个正整数n。输入输出样例1(下划线部分表示输入)Enter n:3 sum=0.893...
...n,计算1-1\/4+1\/7-1\/10+1\/13-1\/16+...前n项之和.(保留两位小数)_百度...
用一个for单循环就可以解决。include <stdio.h> include <stdlib.h> void main(){ int n;double x=0.0;int s=-1;printf("n=");scanf("%d",&n);for(int i=1;i<=n;i++){ s=s*(-1);x=x+s*1.0\/(3*(i-1)+1);} printf("%.2f",x);system("pause");} ...
计算1-1\/4+1\/7-1\/10+1\/13-1\/16+...的前n项之和,n由用户从键盘输入,求...
\/\/首先是分析规律 1可以看作是 1\/1 1\/4 分母是等差数列是 1 4 7 10 13相差为3 \/\/另外符号是 正 负 正 负这样 include <iostream> using namespace std;int main(){ int n;cin>>n; \/\/输入N的值 if(n<=0) \/\/如果输入的是0或者负数 cout<<"input error!";int i=1;int ...