求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?#include#includemain(){\x05double x,b=1,d=1,p=1;\x05int i=0,c=1;\x05printf("Please input an float number:");\x05scanf("%lf",&x);\x05while(

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/27 23:02:24
求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?#include#includemain(){\x05double x,b=1,d=1,p=1;\x05int i=0,c=1;\x05printf(
xR]O`+uQ ^xiL֮ MJiF`D61CCJgm 0+oh9}ys"Rt։u$)&gB|kwb::oS'WL0{y=ʅO%rY!h/"+dw9Ƌ>k9,aC8<^tF<؛) H7Rb)IJ,2%f!uVHPd{ /$\?G_&ѻLuhrw&ϫDI(?Ozw2?84;OC Pf4$|vO׫%%TFSoNI.I(!kT/T"I*پ=2MIƒ]$YXN¥VFDNeHZȽ(ĺNGVO~o]>Rض`USoJͬl`M598zu@oCHA :6u2sEC;fzk*ڇme]\ǍwJ0A2j7 P`ΰJ *uc)_MFj%A7#|v .V;LH0%Ĩ?p>

求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?#include#includemain(){\x05double x,b=1,d=1,p=1;\x05int i=0,c=1;\x05printf("Please input an float number:");\x05scanf("%lf",&x);\x05while(
求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?
#include
#include
main()
{
\x05double x,b=1,d=1,p=1;
\x05int i=0,c=1;
\x05printf("Please input an float number:");
\x05scanf("%lf",&x);
\x05while(fabs(d)>=1e-8)
\x05{
\x05\x05i++;
\x05\x05c=c*i;
\x05\x05b=b*x;
\x05\x05d=b/c;
\x05\x05p=p+d;
\x05}
\x05printf("The result is:%.4lf",p);
\x05return 0;
}

求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?#include#includemain(){\x05double x,b=1,d=1,p=1;\x05int i=0,c=1;\x05printf("Please input an float number:");\x05scanf("%lf",&x);\x05while(
问题出在变量 c 的数据类型上,这是因为,当 x 的值比较大的时候,x^n 除以 n!收敛到0 的速度非常慢,只有当 n 的值非常大的时候才能使得两者的商小于你给的精度,所以在这一过程中 c = n!会超出 int 型数据表示的范围,超出后就使得 c 又回到很小的值,所以出现了死循环.
修改方法:把 c 声明成 double 类型的就可以了.