C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。要求定义和调用
来源:学生作业帮助网 编辑:六六作业网 时间:2025/01/11 13:35:40
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;
}
运行结果: