输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。#include #include int main(void){int x;double e;double funcos(doubl

来源:学生作业学帮网 编辑:学帮网 时间:2024/05/15 05:51:55

输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。
#include
#include
int main(void)
{
int x;
double e;
double funcos(double e,int x);
printf("e:");
scanf("%lf",&e);
printf("x:");
scanf("%d",&x);
printf("cos(x)=%.3f\n",funcos(e,x));\x05
return 0;
}
double funcos(double e,int x)
{
int flag,i,n;
double item,sum;
double fact(int n);
flag=1;
n=0;
i=0;
sum=0;
while(fabs(sum)>=e)
{
item=flag*pow(x,i)*1.0/fact(n);
sum=sum+item;
flag=-flag;
i=i+2;
n=n+2;
}
return sum;
}
\x05
double fact(int n)
{
double product;
int i;
product=1;
if(n==0)
product=1; / * 不能用以下的算法吧?*/
else
{
for(i=1;i


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);//
return sum;
}

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