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;
}
展开
 我来答
秋之义
2013-05-04
知道答主
回答量:23
采纳率:0%
帮助的人:19万
展开全部
n=1时 term=1-1/2 sum=term+1/3=1-1/2+1/3
n=2时 term=1-1/4 sum=term+1/5=1-1/4+1/5
不好意思,你编错了
n=100时 sum=1-1/100+1/101
天空天空天空空
2013-05-04 · TA获得超过2113个赞
知道大有可为答主
回答量:1668
采纳率:50%
帮助的人:1129万
展开全部
#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),就好了,这个算法比较简单吧
追答
你自己模拟下就知道你错哪里了。。。你是一正一负。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mjsgkp
2013-05-04 · TA获得超过112个赞
知道答主
回答量:90
采纳率:0%
帮助的人:74.9万
展开全部
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
展开全部
首先你得符号考虑就有问题,仔细看看就会发现
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式