sinx计算公式。
【问题描述】
已知sinx的近似计算公式如下:
式中,x为弧度,n为正整数。编写程序根据用户输入的x和n,利用上述公式计算sinx的近似值。结果保留8位小数。
【输入形式】
输入小数x(0≤x≤20)和整数n(1≤n≤5000),两数中间用空格分隔。
【输出形式】
输出计算结果,保留8位小数。
【样例输入1】
0.5236 4
【样例输出1】
0.50000105
【样例输入2】
0.5236 50
【样例输出2】
0.50000106
【样例说明】
输入x为0.5236,n为4,求得sinx近似值为0.50000105;同样,输入x为0.5236,n为50,求得sinx近似值为0.50000106。
注意:为保证数据的准确性和一致性,应使用double型数据保存计算结果。
输出结束不换行。
输入小数x(0≤x≤20)和整数n(1≤n≤5000),如果 n = 5000,(2n-1)! 得多大了,以下代码,n > 85 时撑爆,仅供参考:
#include <stdio.h>
#include <math.h>
int main()
{
int sng=-1,n,i,k;
double sum=0,s2,s3,x;
scanf("%lf%d",&x,&n);
for(i=1;i<=n;i++)
{
sng = -sng;
s2= pow(x,2.0*i-1.0);
for (k=1,s3=1;k <= 2*i-1;k++)
s3=s3*k; //阶乘
sum += sng*(s2/s3);
}
printf("%.8lf",sum);
return 0;
}