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

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 10:52:20
C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用

C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用
C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。
输入精度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;
}

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

#include <stdio.h> //头文件置顶

#include <math.h>

double fact(int n)

{

\x09double s = 1;

\x09for(int i = 1; i <= n; i++)

\x09{

\x09\x09s *= i;

\x09}

\x09return s;

}

double funcos(double e,int x)

{

\x09//运算次序要理清

\x09double cos  = 0;

\x09double item = 1;

\x09int       i = 0;

\x09int    flag = 1;

\x09while(abs(item) >= e)

\x09{

\x09\x09item = flag * pow(double (x), 2 * i) / fact(2 * i);

\x09\x09cos += item;

\x09\x09flag *= -1;

\x09\x09i++;

\x09}

\x09return cos;

}

int main()

{

\x09int    x = 0;

\x09double e = 0;

\x09printf("e: ");

\x09scanf("%lf",&e);

\x09printf("x: ");

\x09scanf("%d",&x);

\x09printf("cos(x) = %.3lf\n",funcos(e, x)); //唯一的缺陷就是3必须随e的变化手动改写

\x09return 0;

运行结果: