求大神帮忙!我做了很久还是做不出来……
程序填空,不要改变与输入输出有关的语句。输入一个正整数 repeat (0<repeat<10),做 repeat 次下列运算:
输入精度 e 和 x,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e。
cos(x) = x^0/0!-x^2/2!+x^4/4!-x^6/6!+……
要求定义并调用函数 funcos(e,x)计算 cos(x) 的值,函数形参e和x的类型均为double,函数类型是double。
输入输出示例:括号内是说明
输入:
2 (repeat=2)
0.001 0 (e=0.001, x=0)
0.0001 -3.14 (e=0.0001, x=-3.14)
输出:
sum = 1.000000
sum = -0.999999
这个我编的程序 很有问题 因为新手 所以不懂 求解答!!
#include "stdio.h"
#include "math.h"
double funcos(double e, double x);
int main(void)
{
int repeat, ri;
double e, sum, x;
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%le%le", &e, &x);
sum=funcos(e,x);
/*---------*/
printf("sum = %f\n", sum);
}
return 0;
}
/*---------*/
double funcos(double e, double x)
{
int fact(int i);
int flag,i;
double item,sum;
i=0;
flag=1;
sum=0;
item=1.0;
while(fabs(item)>=e){
item=flag*pow(x,i)/fact(i);
sum=sum+item;
flag=-flag;
i=i+2;
}
return sum;
}
int fact(int i)
{
int sum,m;
if(i==1)sum=1;
else
sum=1;
for(m=1;m<=i;m++){
sum=sum*m;
}
return sum;
}