C语言利用泰勒公式构造求SIN(X),求大触帮看我的代码哪里有问题

我的代码是:
#include<stdio.h>#include<math.h>double sinf(double);int main(void){ double x; printf("Input a number x and you will get sin(x):\n"); scanf("%lf",&x); printf("sin%.2lf=%.3lf",x,sinf(x)); return 0;}double sinf(double x){ double sin,terms;terms=1.0;sin=0.0; int b,n; long z; z=1; for(n=1;terms>=1e-7;n+=2) { if((n+1)/2%2==1) b=1; else if ((n+1)/2%2==0) b=-1; if(n==1) z=1; else z=z*(n-1)*n; terms=pow(x,n)/z; sin+=b*terms; } return sin;}
当输入值<3如0.2,0.5时都是正确的,可是当输入类似3,3.14这类数的时候结果却不正确,求解答!
编译器是DEV-C
大神请指出我的代码哪里有问题,不是重新写一个,谢谢!

一如下代码不是阶乘计算,你要重新增加一个重循环计算阶乘、
if(n==1)
z=1;
else
z=z*(n-1)*n;

二、
if((n+1)/2%2==1)
b=1;
else if ((n+1)/2%2==0)
b=-1;
改为如下更简明:
if((n+1)%2)
b= -1;
else
b=1;
温馨提示:答案为网友推荐,仅供参考