用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e懿要求定义和调用函数funcos(e,x)求余弦

2025-01-07 05:06:51
推荐回答(1个)
回答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)=%.3f\n",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);/**********应该判断item的值************/
return sum;
}

double fact(int n)
{
double product;
int i;
product=1;
if(n==0)
product=1; /* 0!不能用以下的算法吧?*/
else
{
for(i=1;i<=n;i++)
product=product*i;
}
return product;
}