纠结,,为什么不对,是c语言求解cosx近似值

#include<stdio.h>
#include<math.h>
main()
{
double m,n,i,k,g,w,cosx,e,x,h;
m=0;
w=1;
n=1;
i=0;
cosx=0;
printf("输入e x");
scanf("%lf%lf",&e,&x);
while (fabs(i)>=e)
{
m=m+2;
for(k=1;k<=m;k++)
w=k*w;
n=-n;
h=pow(x,m);
g=n*h;
i=g/w;
cosx=cosx+i;
}
printf("%lf",cosx);
return 0;
}

您好,
#include<stdio.h>
#include<math.h>/*fabs()*/
void main()
{
double x,c,a;
int i;
scanf("%lf",&x);
a=1;
c=a;
for(i=1;;i+=2)
{
a*=x*x*(-1)/(i*(i+1));/*相邻两项的比值*/
if(fabs(a)<1e-7)
break;
c+=a;
}
printf("cos(%g)=%.8f\n",x,c);
}
//注意x为弧度,输入的值过大没意义只要在-2*∏~2*∏即可。因为C语言的运算精确度有限。我也曾考虑先把一个弧度转化到-2*∏~2*∏之间,但这需要一个比较准确的∏的值,否则误差会大。
温馨提示:答案为网友推荐,仅供参考
相似回答