对运行中输入的x,计算级数:1+x-x^2/2!+x^3/3!-......(-1)^n+1*x^n/n! ,要求输出精度为10^-8.

#include<iostream.h>
#include<iomanip.h>
#include<math.h>
void main()
{
double x,s1=1.0,s2=1.0,s3,s4;
int n=1,sign=-1;
cout<<"请输入X"<<endl;
cin>>x;
for(;fabs(s1)>1e-8;n++)
{
s2*=n;
s3=pow(x,n);
sign*=-1;
s4=sign*s3/s2;
s1+=s4;
}
cout<<"级数为:"<<setiosflags(ios::fixed)<<setprecision(9)<<s1<<endl;
}
这是我写的。。。有什么错误啊

输出精度不是s1.。。
是指和真实值的差距。。。
s1是你的逼近值。。。
要减去真值差距在10^-8以下
fabs(s1)要改成fabs(s1-ln(x))吧
温馨提示:答案为网友推荐,仅供参考
相似回答