C语言计算1-1/2+1/3-1/4+......+1/99-1/100,我的这种算法为什么结果是1.000000,求解
#include<stdio.h>intmain(){intn;floatsum,term;for(n=2;n<=100;n=n+2){term=1-(1/n);sum=...
#include<stdio.h>
int main()
{ int n;
float sum,term;
for(n=2;n<=100;n=n+2)
{
term=1-(1/n);
sum=term+(1/(n+1));
}
printf("%f\n",sum);
return 0;
} 展开
int main()
{ int n;
float sum,term;
for(n=2;n<=100;n=n+2)
{
term=1-(1/n);
sum=term+(1/(n+1));
}
printf("%f\n",sum);
return 0;
} 展开
5个回答
展开全部
#include<stdio.h>
int main()
{ float n; //n改成float
float sum=0,term;
for(n=1;n<=100;n=n+2)
{
term=1/n; //这里的计算有很严重的错误。。。
sum=sum+term-(1/(n+1)); //算法建议你再考虑下。。。
}
printf("%f\n",sum);
return 0;
}
上面是我改过的代码
更多追问追答
追问
我把sum的初始值设为1,然后让term=sum-(1/n),就好了,这个算法比较简单吧
追答
你自己模拟下就知道你错哪里了。。。你是一正一负。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
c语言整数除整数依然的整数,例如3/2=1,4/3=1,4/2=2,2/3=0,所以你的term(temp)一直是1,sum也一直是1,要想求浮点数加将1/n改为1.0/n,下面求sum的也这么改就好了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-04
展开全部
n是整型的,1/n=0,所以当n=100时,term=1,sum=1+0=1,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-04
展开全部
首先你得符号考虑就有问题,仔细看看就会发现
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询