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

输入精度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)=%.3fn",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
hstax 1年前 已收到1个回答 举报

高山和景行 幼苗

共回答了18个问题采纳率:72.2% 举报


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

1年前

1
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 16 q. 0.019 s. - webmaster@yulucn.com