C语言实验——余弦 1194

//附上链接:https://acm.sdut.edu.cn/onlinejudge2/index.php/Home/Index/problemdetail/pid/1194.html

//注意 :之前我把下面的哪一个求阶乘的 函数返回值 设置成了 long long int  
//这样的话 你输入第二组测试实例  1.5 50  当i大约循环到30左右的时候 cosx
//的值 就会变成 	-1.#IND000000000000  这样的一串奇怪的数字,意思是无穷,这说明计算时
//出现溢出错误,比如除0  为了避免这种情况 直接将求阶乘的函数的返回值改成
//double

#include
#include
#include
#include
#include
#include
using namespace std;
double jiecheng( double n)
{
	int  i;
	double sum=1;
	for (i = 1; i <= 2 * n; i++)
	{
		sum *= i;
	}
	return sum;
}

int main()
{ 
	int i;
	double n;
	double x,cosx;
	while (scanf("%lf%lf", &x, &n) != EOF)
	{
		cosx = 1;
		if (x == 0)
		{
			printf("%.4lf\n", cosx);
		}
		else
		{
			for (i = 1; i <= n; i++)
			{
				if (i % 2 == 1)
				{
					cosx += -((pow(x, 2 * i) / jiecheng(i)));
				}
				else
				{
					cosx += (pow(x, 2 * i) / jiecheng(i));
				}
			}
			printf("%.4lf\n", cosx);
		}
	}
   	return 0;
}


你可能感兴趣的:(基础练习)