#include <stdio.h>
#include <stdlib.h>
int sat(int n)
{
long i,m=-1,s=1;
for(i=1;i<=n-1;i++)
s=s*m;
return (s);
}
double qin(int n,double x)
{
long i; double q=1;
for(i=1;i<=(2*n-1);i++)
q=q*x;
return (q);
}
double pin(int n)
{long i;double p=1;
for (i=1;i<=(2*n-1);i++)
p=p*i;
return (p);
}
int main()
{double x,e,sin=0;int n;
scanf("%lf %lf\n",&x,&e);
for (n=1;qin(n,x)/pin(n)>=e;n++)
sin=sin+sat(n)*qin(n,x)/pin(n);
printf("%lf\n",sin);
system("pause");
return 0;
}
已知求正弦 sin(x) 的近似值的多项式公式为:
sin(x) = x - x3/3! + x5/5! - x7/7!+ …… + (-1)n x2n+1/(2n+1)! + …
编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。
没有反应的原因有很多种。比如错误输入,类型错误,代码逻辑错误。不同的情况应该分开分析。
例如 scanf("%lf %lf\n",&x,&e);
这样的语句在回车后就没有反应,必须输入\n后才会有反应。
因为非输出控制符必须原样输入。\n在scanf函数当中并不是控制符,这里没当成换行符使用。用scanf 不要加入“\n”非输入控制符,系统在运行时会自动换行。