2 回答

TA貢獻2036條經(jīng)驗 獲得超8個贊
cosx函數(shù)
#include<stdio.h>
#include<math.h>
int main()
{
int n=0;
double x,sum=0;
printf("please enter x:");
scanf("%lf",&x);//
double cosx(double x,int n);
do
{
sum=sum+cosx(x,n);
n=n+1;
}
while(fabs(cosx(x,n))>1e-8);
printf("%9.8f\n",sum);
return 0;
}
double cosx(double x,int n)
{
double p,q;//
p=pow(x,2*n);
double fact(int n);//
q=fact(2*n);
if(n%2)
return(-p/q);
else
return(p/q);
}
double fact(int n)//
{
double ans=1; int i;
if(n<=1)
return 1;
for(i=1;i<=n; ++i)
ans*=i;
return ans;
}
cosx函數(shù)即反余弦函數(shù)
函數(shù)y=cosx(x∈[0,π])的反函數(shù)叫做反余弦函數(shù),
記作y=arccosx(x∈[-1,1]).

TA貢獻1860條經(jīng)驗 獲得超9個贊
錯誤有兩類:
1. scanf("%f",&x);由于x是double型,所以應改成scanf("%lf",&x);
2. fact()和cosx()中用int型來計算n!會很快溢出,應改為double型
改后如下,運行正確。
#include<stdio.h>
#include<math.h>
int main()
{
int n=0;
double x,sum=0;
printf("please enter x:");
scanf("%lf",&x);//
double cosx(double x,int n);
do
{
sum=sum+cosx(x,n);
n=n+1;
}
while(fabs(cosx(x,n))>1e-8);
printf("%9.8f\n",sum);
return 0;
}
double cosx(double x,int n)
{
double p,q;//
p=pow(x,2*n);
double fact(int n);//
q=fact(2*n);
if(n%2)
return(-p/q);
else
return(p/q);
}
double fact(int n)//
{
double ans=1; int i;
if(n<=1)
return 1;
for(i=1;i<=n; ++i)
ans*=i;
return ans;
}
- 2 回答
- 0 關注
- 169 瀏覽
添加回答
舉報