输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数f

1个回答

  • while(fabs(sum)>=e)

    {

    item=flag*pow(x,i)*1.0/fact(n);

    sum=sum+item;

    flag=-flag;

    i=i+2;

    n=n+2;

    }

    改为:

    do

    {

    item=1.0*flag*pow(x,i)/fact(n);

    sum=sum+item;

    flag=-flag;

    i=i+2;

    n=n+2;

    }while(fabs(item)>=e);

    下面是在你的基础上修改的:

    #include

    #include

    double funcos (double,int);

    double fact (int);

    int main(void)

    {

    int x;

    double e;

    printf("e: ");

    scanf("%lf",&e);

    printf("x: ");

    scanf("%d",&x);

    printf("cos(x)=%.3fn",funcos(e,x));

    getch ();

    return 0;

    }

    double funcos(double e,int x)

    {

    int flag,i,n;

    double item,sum;

    flag=1;

    n=0;

    i=0;

    sum=0;

    do

    {

    item=1.0*flag*pow(x,i)/fact(n);

    sum=sum+item;

    flag=-flag;

    i=i+2;

    n=n+2;

    }while(fabs(item)>=e);//

    return sum;

    }

    double fact(int n)

    {

    double product;

    int i;

    product=1;

    if(n==0)

    product=1; /* 0!不能用以下的算法吧?*/

    else

    {

    for(i=1;i