不对!
你第一次循环的时候,加了1-1/2,这是对的
第二次循环,加了1/2-1/3,这就不对了,应该加1/3-1/4才对
所以应该把for (i=1;i<99;i++)
改成for (i=1;i<=99;i+=2)
每次循环i都加2,并且i=99时应该在循环内
你的程序是有错误的
在你的程序基础上,需要修改for循环部分:
#include "stdio.h"
void main()
{
double i,sum;
sum=0;
for (i=1;i<=99;i+=2)// 注意需要i<=99和i=i+2,按你原来的方法计算的是1-1/99
{
sum=1/i-1/(i+1)+sum;
}
printf("%lf",sum);
}
如题,式子的奇数次项为+,偶数次项为减,你的程序是
sum=1/i-1/(i+1)+sum,这样
sum=1/1-1/2;
sum=1/2-1/3+1/1-1/2=1/1-1/3,
程序可以修改为1,3,5…奇数次项的sum1和2,4,6…偶数次项的sum2,sum1-sum2
或者更改为for (i=1;i<101;i+=2)
或者可以将循环改为while(i!=101){
sum=1/i-1/(i+1)+sum;
i=i+2;
}
另外i可以作为int型参与运算而不必转化为double型,这样会加大计算机的计算负担。
vs2010编译通过,其余编译器参照
#include "stdafx.h"
double f(){
double sum;
sum=1;
for(int i=1;i<=99;i++)
{
sum+=((-1)^i/(i+1));
return sum;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
printf("%lf",f());
return 0;
}
i<=99,试试看