标题:大家帮忙看看哪出错了?谢谢!
只看楼主
爱你521226
Rank: 2
等 级:论坛游民
帖 子:25
专家分:34
注 册:2011-3-31
结帖率:71.43%
已结贴  问题点数:8 回复次数:6 
大家帮忙看看哪出错了?谢谢!
求下面数列的前若干项之积,直到第一次出现积小于0.0001为止,并输出此时已经参与运算的数列项数和最终的积。结果保留6位小数。
                1/(1*2),1/(3*4),1/(5*6),……,1/((2n-1)*(2n)),……


#include<stdio.h>
main()
{
      int n,count;
      float fac=1,m;
      n=1;
      m=1/(float)(2*n-1)*(2*n);
      fac*=m;
      while(fac>0.0001)
      {
          n++;
          m=1/(float)(2*n-1)*(2*n);
          fac*=m;
          count++;
      }
      printf("共有%d项参与运算,结果为%.6lf。\n",count,fac);
}
我编的程序没结果,请各位高手看看啊。
搜索更多相关主题的帖子: include count 
2011-04-26 08:25
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
程序代码:
float s=1,x,i=1;int m=0;
do{x=1/(i*(i+1));
i=i+2;s=s*x;m++;
}
while(s>0.00001);
printf("%d\n%.10f",m,s);
2011-04-26 08:39
爱你521226
Rank: 2
等 级:论坛游民
帖 子:25
专家分:34
注 册:2011-3-31
得分:0 
你的程序也没结果啊,咋回事啊?
2011-04-26 08:43
hjywyj
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:3
帖 子:1114
专家分:2611
注 册:2010-4-14
得分:0 
回复 3楼 爱你521226
有结果啊。
5
0.0000002756
2011-04-26 08:51
mm1010220cs
Rank: 2
等 级:论坛游民
帖 子:36
专家分:98
注 册:2011-4-7
得分:8 
修改如下:
#include<stdio.h>
main()
{
      int n,count;    //cout=0;
      float fac=1,m;
      n=1;
      m=1/(float)(2*n-1)*(2*n);    //m=1/(float)((2*n-1)*(2*n))
      fac*=m;
        //cout++
      while(fac>0.0001)
      {
          n++;
          m=1/(float)(2*n-1)*(2*n);    //m=1/(float)((2*n-1)*(2*n))
          fac*=m;
          count++;
      }
      printf("共有%d项参与运算,结果为%.6lf。\n",count,fac);
    //printf("共有%d项参与运算,结果为%.6f。\n",count,fac);

}
注视后面都是需要要修改的
2011-04-26 08:54
爱你521226
Rank: 2
等 级:论坛游民
帖 子:25
专家分:34
注 册:2011-3-31
得分:0 
求下面数列的前若干项之积,直到第一次出现积小于0.0001为止,并输出此时已经参与运算的数列项数和最终的积。结果保留6位小数。
                1/(1*2),1/(3*4),1/(5*6),……,1/((2n-1)*(2n)),……

不行啊 ,不对,请大家再看看吧!谢谢了!
2011-04-26 09:05
voidx
Rank: 12Rank: 12Rank: 12
来 自:邯郸
等 级:火箭侠
帖 子:1250
专家分:3538
注 册:2011-4-7
得分:0 
m = 1 / (float) ((2*n-1) * (2*n));    // 小学生犯的错误

也可以这么写:

程序代码:
#include <stdio.h>

int main()
{
    double n, prod;
    for (n = prod = 1; prod >= 0.0001; n += 2) {
        prod *= 1 / (n * (n + 1));
    }
    printf("%.6lf %.0lf", prod, (n + 1) / 2);
    return 0;
}


[ 本帖最后由 voidx 于 2011-4-26 13:59 编辑 ]
2011-04-26 12:22



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-337919-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.522743 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved