当前位置: 代码迷 >> C语言 >> 程序那里出错了?
  详细解决方案

程序那里出错了?

热度:65   发布时间:2005-12-02 08:21:00.0
程序那里出错了?
求1-1/2+1/3-1/4.....+1/99-1/100的程序
我的写法是:
main()
{
int i;
float s=1.0;
for (i=2;i<=100;i++)
{
if (i%2==0)
s+=1/i;
else s+=-1/i;
}printf ("s=%f",s);
}
在win-tc下编译成功,但是结果是 s=1.000000,错在哪里了呢?请指教!
----------------解决方案--------------------------------------------------------
#include<stdio.h>
void main()
{
int i;
float s=0.0,n=-1.0;
for (i=1;i<=100;i++)
{n*=-1;
s+=n/i;
}
printf("s=%f\n",s);
}
在win-vc++下编译,试试
----------------解决方案--------------------------------------------------------
main()
{
int i;
float s=1.0;
for (i=2;i<=100;i++)
{
if (i%2==0)
s+=-1/i;
else
s+=1/i;
}
printf ("s=%f",s);
}

[此贴子已经被作者于2005-12-2 12:37:36编辑过]


----------------解决方案--------------------------------------------------------
1/i(i&gt;=2)的结果是零,改成1.0/i试试.楼主程序的逻辑也有点错误,仔细点应该可以自己发现.
----------------解决方案--------------------------------------------------------

我不知道你错在哪里。不过我自己是这样写的
void main()
{
float a,b,c;
for(a=1;a<=100;a=a+2)
{
b=1/a-1/(a+1);
c+=b;
}
printf("%5.3f",c);
}
算的答案是0.688
我想你可能是I要把它定义成FLOAT试一下呐


----------------解决方案--------------------------------------------------------

1/n 结果是是隐含强制转换成整型数 所以为0 所以循环每一步都是S=S+0 也就是
1=1+0 结果没变化 最后浮点格式输出 结果为1 小数点后为6位精度


----------------解决方案--------------------------------------------------------
5楼的 b=1/a-1/(a+1);是什么意思。是表示b=1/((a-1)*(a+1))还是b=(a+1)/(a-1).

----------------解决方案--------------------------------------------------------
  相关解决方案