求1-1/3+1/5-1/7+1/9…前100项之和 c++ 求人帮我修改正确来
发布网友
发布时间:2024-01-09 22:03
我来回答
共4个回答
热心网友
时间:2024-02-03 11:42
#include <iostream>
using namespace std;
int main()
{
int i;
double S,S1=0,S2=0,a[101];
for(i=1;i<=100;i++)
//此处应该写成 2*i的形式,但是为了符合题意,必须写成2.*i ,目的是整形转化为浮点型
a[i]=1/(2.*i-1);
for(i=1;i<=100;i=i+4)
S1=S1+a[i];
for(i=3;i<=100;i=i+4)
S2=S2+a[i];
S=S1-S2;
cout<<S<<endl;
return 0;
}
//最后你程序的运行结果是 0.864461,误差的原因是你的数组和分2项相加的误差造成的
//以下是我的做法
===================================
#include <iostream>
using namespace std;
int main()
{
double sum=0;
for(int i=1,k=1;i<=100;i++,k*=-1)
sum=sum+1./(i*2-1)*k;
cout<<sum;
return 0;
}
//结果为:0.782898 如果是N项之和,N趋近无穷大,那么极限为 π/4追问谢谢,改好了。不过using namespace std;是表示什么?
热心网友
时间:2024-02-03 11:43
这个正负是交叉的,所以你弄的循环步距应该是2吧!
把两个for循环的括号里改成 i=i+2 试试。追问我是把这个分成两个数列来做了
热心网友
时间:2024-02-03 11:43
语法错、模型错,改错不如重做:
#include <iostream.h>
void main() {
int i;
double s=0;
for(i=1;i<=100;i++) s+=((i%2)?1:(-1)) / (i*2-1);
cout << s << endl;
}
热心网友
时间:2024-02-03 11:44
for(i=1;i<=100;i=i+4)
S1=S1+a[i];
for(i=3;i<=100;i=i+4)
S2=S2+a[i];
你把i=i+4换成i=i+2
然后i=3改成i=2
我没试