/*/
7.程序填空,不要改变与输入输出有关的语句。
输入一个正整数 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>
int main(void)
{
int repeat,ri,e,x;
double sum;
double funcos(double e,double x); //声明余弦函数
scanf("%d",&repeat);
for(ri=1;ri<=repeat;ri++){
scanf("%lf%lf",&e,&x);
sum=funcos(e,x); //调用余弦函数
printf("sum = %f\n",sum);
}
return 0;
}
//定义余弦函数,返回精确度为e的cos(x)的值
double funcos(double e,double x)
{
double result=0;
double fact(int n); //声明阶乘函数
int i=0,flag=1;
while(0==0){
result=result+pow(-1,j)*( pow(x,i)/fact(i) ); //求余弦值
if( e > pow(x,i)/fact(i)) //判断精确度
break;
i=i+2;
flag=-flag;
}
return result;
}
//定义阶乘函数,返回n!
double fact(int n)
{
int i;
double result=1;
for(i=1;i<=n;i++)
{
result=result*i;
}
return result;
}
总共是两个问题。一个出在判断精度上,一直循环不出来。一个是就算结果出来了,也只会做一次,不会做第二次repeat。就是说输入repeat=2,本来是做两次这样的运算,结果他算完一次就结束了。求高手帮我查查错误原因。希望高手不要说的太复杂,也不要把我的代码改的面目全非。
这不是死机……