新手,求指导。输出的数据有错误。
输入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 编辑 ]