浙大版《C语言程序设计(第4版)》题目集 习题5-7 使用函数求余弦函数的近似值

  • Post author:
  • Post category:其他




题目要求:

本题要求实现一个函数,用下列公式求cos(x)的近似值,精确到最后一项的绝对值小于e:

cos(x)=x^​0/0!−x ^​2/2!+x ^4/4!−x ^6/6!+⋯



函数接口定义:

double funcos( double e, double x );

其中用户传入的参数为误差上限e和自变量x;函数funcos应返回用给定公式计算出来、并且满足误差要求的cos(x)的近似值。输入输出均在双精度范围内。



裁判测试程序样例:

#include <stdio.h>
#include <math.h>

double funcos( double e, double x );

int main()
{    
    double e, x;

    scanf("%lf %lf", &e, &x);
    printf("cos(%.2f) = %.6f\n", x, funcos(e, x));

    return 0;
}

/* 你的代码将被嵌在这里 */



输入样例1:

0.01 -3.14



输出样例1:

cos(-3.14) = -0.999899



代码:

double funcos(double e, double x)
{
	int flag = 1, i = 0, j;
	double sum = 0, item = 1.0, temp = 1;   //temp要用double型,否则精度高,不可直接计算阶乘测试点通不过
	while(fabs(item)>=e)
	{		
		sum += item;
		flag = -flag;
		i = i + 2;
		temp = 1;
		for(j=1; j<=i; j++)
		{
			temp = temp * j;
		}
		item = flag * (pow(x, i)/temp); 			
	}
	sum += item;
	return sum;
}



版权声明:本文为hhh232323原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。