输入精度e,求cos(x)近似值,要求精确到最后一项的绝对值小于e,且定义并调用函数funcos(e,x),

输入精度e,求cos(x)近似值,要求精确到最后一项的绝对值小于e,且定义并调用函数funcos(e,x),
有式:cos(x)=pow(x,0)/0!-pow(x,2)/2!+pow(x,4)/4!-pow(x,6)/6!+………………
#include
#include
main()
{
double e,x,sq;
double funcos(double e,double x);
printf("Enter e,x:");
scanf("%lf,%lf",&e,&x);
sq=funcos(e,x);
printf("cos(%.2f)=%f",x,sq);
return 0;
}
double funcos(double e,double x)
{
int flag=1,n=0;
double fact(int n);
double item,sum;
do{
item=flag*pow(x,2*n)/fact(2*n);
sum+=item;
n++;
flag=-flag;
}while((item/flag)>=e);
return sum;
}
double fact(int n)
{
int i,fact=1;
for(i=1;i
hongri_435e 1年前 已收到2个回答 举报

ybw123456 幼苗

共回答了11个问题采纳率:100% 举报

指出几个问题吧..
(1)double funcos(double e,double x);函数申明应该放在main函数外面;
(2)double funcos(double e,double x)函数里面的sum变量没有初始化,item最好也初始化一下;
(3)double fact(int n)函数应该在main函数之前申明一遍,而且里面最好不要使用fact变量.

1年前 追问

4

hongri_435e 举报

(1)应该没问题,这是使用声明 (2)改了,但是没什么作用 (3)这个fact()应该怎么压到另一个函数里,就是不知道怎么用才分出来的

举报 ybw123456

(1)使用申明不要放在函数里面,放在main函数的前面. 比如 double funcos(double ,double ); double fact(int ); main() {...} double funcos(double e,double x){...} double fact(int n){...} (2)sum变量肯定是要初始化为0的. (3)fact函数里面不要把变量用为fact.换成其他的比如temp. 这是c++程序..你可以对比一下. #include #include using namespace std; double funcos(double e,double x); double fact ( int ) ; int main() { double e,x,sq; cout << "Enter e,x:" ; cin >> e >> x ; sq=funcos(e,x); cout << "cos(" << x << ")=" << sq << endl ; return 0; } double funcos(double e,double x) { int flag=1,n=0; double item = 0 ,sum = 0 ; do{ item=flag*pow(x,2*n)/fact(2*n); sum+=item; n++; flag=-flag; }while((item/flag)>=e); return sum; } double fact(int n) { double tmp = 1.0; for(int i = 1 ; i <= n ;i ++) tmp=tmp*i; return tmp; }

hongri_435e 举报

相应改了一下,执行还是不对

举报 ybw123456

你试试我的程序 在vs2008上是可以运行的.

天蝎星 幼苗

共回答了1个问题 举报

1

1年前

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