用C++编程求e^x的近似值,要求精确度<=10^(-8),以下是我的编程:

2025-03-10 18:10:01
推荐回答(3个)
回答1:

判断条件出错,while(a<10e-8);泰勒展开的精度是指最后一项的精度,展开到某一项的精度达到某个值就可以停止了,而你的程序里面的a是指e的近似值,这没有意义,应改为:while(pow(x,n)/k>=10e-8),当然,为了提高程序的运行速度(从一开始就应该养成这个良好的习惯),可以用一个变量存储,不用再算一遍,修改后的代码如下:
#include
#include

void main(void)
{
double x,a=1,n=1,k=1,temp=0;
cin>>x;
do
{
temp=pow(x,n)/k;
a+=temp;
++n;
k=k*n;
}
while(temp>=10e-8);
cout<<"e^x="<}

pow(x,n)用来求x的n次方,该函数包含在math.h头文件里面,n的阶乘可以在主函数的循环里面完成,不用另外弄一个函数,这样计算机会很辛苦

另外尽量不要用n++,,尽量用++n,因为n++会另外开辟一个变量存储中间值,用++n效率会高一点,这些都是良好的编程习惯,为计算机节省空间跟运行时间

回答2:

在头文件里加上这个:#include"iomanip.h"
最后一行改为:cout<注:setprecision(num),num是几,小数点后就保留num-1位!
另外我是一名软件工程专业的大学生,以后有问题可以问我,我的邮箱是pengpeng_ps@yahoo.com.cn

回答3:

while(a<10e-8);
这个循环条件错啦,a是恒大于10e-8的啊
我觉得应该为:
do
{
n++;
a+=pingfang(x,n)/jiecheng(n);
}
while(pingfang(x,n)/jiecheng(n)>10e-8);
(n初值为0啊,上面改一下)
(泰勒记不得了,我猜的啊)