C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小

问题描述:

C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小
输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用函数funcos(e,x)求余弦函数的近似值。
【输入形式】
输入两个浮点数:精度e和实数x
【输入输出样例1】(下划线部分表示输入)
e:0.001
x:1
cos(x)=0.540
-----------------------------------------
为什么出来的都是0,
逐步调试后,发现while那里,明明item=1.800>e的,却直接跳出循环了,为什么,该怎么改.
#include
double fact(int n)
{
\x05int i;
\x05double s=1;
\x05for(i=1;i=e){
\x05\x05item=flag*pow(x,2i)/fact(2i);
\x05\x05flag=-flag;
\x05\x05i++;
\x05\x05cos=cos+item;
\x05}
\x05return cos;
}
#include
int main()
{
\x05int x;
\x05double e;
\x05printf("e:");
\x05scanf("%lf",&e);
\x05printf("x:");
\x05scanf("%d",&x);
\x05printf("cos(x)=%.3lf",funcos(e,x));
\x05return 0;
}
1个回答 分类:综合 2014-10-17

问题解答:

我来补答
因为你的item 一开始没有初始化 编译器就给你一个特别小的负数 所以你运行 就直接跳出while循环了
再问: 初始了item=1后,还是不行... 是不是程序上问题...
再答: item=flag*pow(x,2i)/fact(2i);你这里的2i是什么 不是应该是 2*i吗?
再问: 改了之后还是输入完后 死循环....
 
 
展开全文阅读
剩余:2000