求大神指导,用泰勒公式求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/04/28 11:17:19
求大神指导,用泰勒公式求e的x次方的c语言程序错在哪里,为什么x超过1.3就无法执行了?#include#includemain(){\x05double x,b=1,d=1,p=1;\x05int i=0,c=1;\x05printf(

求大神指导,用泰勒公式求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 类型的就可以了.