新手,求指导。输出的数据有错误。
输入x的值,计算sinx=x-x^3/3!+x^5/5!-x^7/7!+……,要求最后一项绝对值小于10的负六次方。下面有两个程序。上面一个输出的数据有错误。下面一个是我用另一种方法做的,应该没问题。
程序代码:#include<stdio.h>
#include<math.h>
int main()
{
float x,sinx=0;
int i=0;
long lc(int i);
printf("enter x:");
scanf("%f",&x);
for(i=0;(pow(x,(2*i+1))/lc(i))>=1e-6;i++)
sinx+=pow((-1),i)*pow(x,(2*i+1))/lc(i);
printf("%d\n",i);
printf("%ld\n",lc(i));
printf("%f\n",sinx);
return 0;
}
long lc(int i)
{
int j=1,n=1;
for(j=1;j<=(2*i+1);j++)
n*=j;
return n;
}
请大家帮帮忙,看看上面那个问题在哪里。谢谢哈。
#include<stdio.h>
#include<math.h>
int main()
{
float s,x,r;
int k=1;
printf("x=");
scanf("%f",&x);
r=s=x;
while(s>=1e-6)
{
s=s*x*x/(2*k*(2*k+1));
k++;
r=r+s*pow(-1,k-1);
}
printf("sinx=%f\n",r);
return 0;
}[ 本帖最后由 firmthinking 于 2012-12-26 19:58 编辑 ]









