雷欧父亲和奥特之王:请高手帮忙调试一下下面的C++程序

来源:百度文库 编辑:高考问答 时间:2024/04/28 17:09:50
这个是求sin1.0的近似值的C++程序,帮忙开一下哪里有问题啊,因为运行起来是乱码,而不是正确结果0.83609
#include<iostream.h>
#include<math.h>

void main(void)
{
int sign=1,j=1;
double x=1.0,y=0;
do{y+=sign*x/j;
sign*=(-1);
x*=x*x;
j*=(j+1)*(j+2);}
while(fabs(sin(10)-y)>=1e-6);
cout<<y;
}

j*= (j+1)*(j+2);还有x*=x*x;
相当于每次都将x和y立方一次.这两句话,会使得x和y的值以非常高的速度变大,最后会变得非常之大,大到int无法接受y的值,造成溢出,所以会变成乱码.

j的值为0啦!相除的时候去出错哦!
语句j*=(j+1)*(j+2);
会使j溢出,在循环到第30次的时候j的值为0啦!所以会出问题哦!