一个初级的C++编程问题

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:43:36
/*
求函数:sin(x)=x/1! - x3/3! + x5/5! -x7/7! +…,最后一项精度不低于0.000001
*/
void main()
{

double x,sinx(0.0),jbf,j=1.0;
cin>>x;
jbf=x;
int i=0,k,n(1),l;
while(j>=1e-6)
{
j=jbf/n;
jbf=jbf*x*x;
i%2==0 ? k=1:k=-1;
sinx=sinx+k*j;
n=1;
i +=1;
for(l=1;l<=(2*i+1);l++)
{
n=n*l;
}

}

cout<<"sin(x) = "<<sinx<<endl;

}

我写的这个代码结果有差错,调试好久不知哪里的问题,请指教一下,顺便问一下这个程序有没有什么循环优化的方法。谢谢!
回一楼:声明double型变量sinx,并将sinx赋初值0.0。谢谢回复!

#include <iostream.h>
void main()
{
double x,sinx=0.0,jbf,j=1.0;
cin>>x;
jbf=x;
int k=1,l=1;
double n=1;
while(j>=1e-6)
{
j=jbf/n;
sinx=sinx+k*j;
jbf=jbf*x*x;
k=-k;
n=n*(l+1)*(l+2);
l+=2;
}
cout<<"sin(x) = "<<sinx<<endl;
}

我调试了下,发现是数据溢出的问题,n溢出了,换成double差不多,应为阶乘太大了。

sinx(0.0) 是什么 变量?