得到
  • 汉语词
  • 汉语典
当前位置 :
sum=sum*i/(2*i+1)和sum*=i/(2*i+1)的区别#include#include<conio.h>#includedoublefun(doubleeps){doublet=1.0,sum=1.0;inti=1;while(sum>=eps)/*当某项大于精度要求时,继续求下一项*/{sum=sum*i/(2*i+1);/*求
3人问答
问题描述:

sum=sum*i/(2*i+1)和sum*=i/(2*i+1)的区别

#include

#include

#include

doublefun(doubleeps)

{

doublet=1.0,sum=1.0;

inti=1;

while(sum>=eps)/*当某项大于精度

要求时,继续求下一项*/

{sum=sum*i/(2*i+1);/*求多

项式的每一项*/

t=t+sum;/*累加求和*/

i++;

}

return2*t;

}

voidmain()

{

doublex;

printf("Inputeps:");

scanf("%lf",&x);

printf("neps=%lf,PI=%lfn",

x,fun(x));

}

#include

#include

#include

doublefun(doubleeps)

{inti=1;

doublet=1.0,sum=0;

while(t>=eps)

{

sum+=t;

t*=i/(2*i+1);

++i;

}

return2*sum;

}

voidmain()

{

doublex;

printf("Inputeps:");

scanf("%lf",&x);

printf("neps=%lf,PI=%lfn",

x,fun(x));

}为什么结果不一样?

孙农亮回答:
  假如i=5时就退出while循环,一:sum+=t;x05t*=i/(2*i+1);//当i=5时,这个t*=5/11,sum并没有把i=5时的t值相加x05++i;你这样写相当于whiledo先判断再加二:sum=sum*i/(2*i+1);//当i=5时,这个sum*=5/1...
葛树志回答:
  不过在vissualC++6.0里运行第一个程序会出来正确结果而第二个程序无论精度怎么调,结果都是2,不知道为什么,感觉是这两个语句应该是一样的啊
孙农亮回答:
  方法一:while(sum>=0.05)/*当某项大于精度要求时,继续求下一项*/{sum=sum*i/(2*i+1);//i=4时sum=0.0253968253968t=t+sum;//这里就把i=4时的项sum=0.0253968253968累加进来了。i++;//i自加i=5;}结果eps=0.05i=5sum=0.0253968253968t=1.549206349212*t=3.09841269841方法二:while(t>=0.05){sum+=t;//在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加t*=i/(2*i+1);//i=4时t=0.0253968253968=0.05){sum+=t;//在这里累加,但是却没有把最后一项累加进来,少了最后一项的累加t*=i/(2*i+1);//i=4时t=0.0253968253968
最新更新
PC端 | 移动端 | mip端
百百课(baibeike.com)汇总了汉语字典,新华字典,成语字典,组词,词语,在线查字典,中文字典,英汉字典,在线字典,康熙字典等等,是学生查询学习资料的好帮手,是老师教学的好助手。
声明:本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。

邮箱:  联系方式:

Copyright©2009-2021 百百课 baibeike.com 版权所有 闽ICP备2021002822号-13