先来看看sin(x)的泰勒展开式长什么样吧!
以下是实现代码:
#include#include int main() { double x;//输入的数x while(scanf("%lf",&x)!=EOF)//有多组输入 { if(x==0) { printf("%.6lfn",x); } else { long long zi,mu,i; double sum=0, s=1.0; for(i=1; ; i=i+2) { zi=pow(x,i); //printf("分子=%ld,",zi); mu=1; int k=1; for(k=1; k<=i; k++) { mu=mu*k; } //printf(",分母=%ld",mu); sum=sum + s*zi/mu; //printf(",此项绝对值=%ld",zi*1.0/mu); //printf(",此时sum=%ldn",sum); if(1.0*zi/mu < 1e-5) //注意此处要乘以1.0以后再除,因为zi和mu都是long long, 两者相除自动取整 { sum = sum - s*zi/mu; break; } s=-1*s;//别忘了变号 } printf("%.6lfn",sum); } } return 0; }



