C语言 SIN求解求助

来源:百度知道 编辑:UC知道 时间:2024/06/15 02:33:35
#include<stdio.h>
void main()
{
float x,y,z,m;
int n,w;
scanf("%d",&x);
y=x,n=1,m=x,w=1,z=0;
while(fabs(z)>1e-5)
{
m=m+z;
z=y*x*x/w*(n+1)*(n+2);
z=-z;
y=z;
w=w*(n+1)*(n+2);
n=n+2;
}
printf("%d",m);
}

SIN X=X-X^3/3!……(-1)^n-1·x^2n-1/2n-1!

什么值算出来=0 为什么???
??不懂~
#include<stdio.h>
#include<math.h>
void main()
{
float x,y,z,m;
int n;
scanf("%f",&x);
y=x,n=1,m=x,z=1;
do
{
z=y*x*x/(n+1)*(n+2);
z=-z;
m=m+z;
n=n+2;
y=z;
}
while(fabs(z)<1e-5);
printf("%f",m);
}
又错!`

其一:z=y*x*x/(n+1)*(n+2); 要改成z=y*x*x/((n+1)*(n+2));//这点不必多说
其二:while(fabs(z)<1e-5); 要改成while(fabs(z)>1e-5); //不然是在z绝对值接近于0时才执行循环..通常会一遍跳出,

这样:
main()
{
float x,y,z,m;
int n;
scanf("%f",&x);
y=x,n=1,m=x,z=1;
do
{
z=y*x*x/((n+1)*(n+2));
z=-z;
m=m+z;
n=n+2;
y=z;
}
while(fabs(z)>1e-5);
printf("%f",m);
}

两个问题:
1、先令z=0;所以while(fabs(z)>1e-5)永远不成立,直接跳到循环之后的printf("%d",m);语句。
2、m是float型,不应用%d输出,应该用%f

x = n * pi ? (n为整数)