C语言编程求正弦 sin(x) 的近似值如题 谢谢了

已知求正弦sin(x)的近似值的多项式公式为:sin(x)=x-x3/3!+x5/5!-x7/7!+……+(-1)nx2n+1/(2n+1)!+…编写程序,要求输入x(单... 已知求正弦 sin(x) 的近似值的多项式公式为: sin(x) = x - x 3 /3! + x 5 /5! - x 7 /7!+ …… + (-1) n x 2n+1 /(2n+1)! + … 编写程序,要求输入 x (单位是弧度)和ε,按上述公式计算 sin(x) 的近似值,要求计算的误差小于给定的ε。 这个程序为什不对呢,正确的是什么 #include <stdio.h> #include <math.h> main(void) { float x,e,s,d,n; n=1; s=0; scanf("f%f%",&x,&e); d=fabs(s-sin(x)) while(d>e) s+=(pow(x,n))/(n!)-(pow(x,n+2))/((n+2)!); n+=4; printf("f%\n",&s); } 展开
 我来答
百度网友de783f4
推荐于2017-11-26 · TA获得超过104个赞
知道答主
回答量:123
采纳率:100%
帮助的人:57.2万
展开全部
你这程序存在很多语法错误例如单精度浮点格式符是%f,不是f%,求阶乘不能用!,下面是我的程序,你可以参考一下: #include <stdio.h> #include <math.h> int jiecheng(int x);//递归求阶乘 main() { double x,e,s,d; int n; n=0; s=0; printf("依次输入x和误差e\n"); scanf("%lf%lf",&x,&e); d=s-sin(x); if(d<0)d=-d; printf("%lf\n",d); while(d-e>0){ if(n==0)s+=x; else{ s+=(pow(-1,n))*x*(2*n+1)/jiecheng(2*n+1); d=s-sin(x); if(d<0)d=-d; } n++; } printf("%lg\n%lg",s,sin(x)); } long jiecheng(int x) { int y; if(x>1)return x*jiecheng(x-1); return 1; } 我用了双精度浮点,64位,但因为过程出现很多位小数,只要你设置的误差太小,依然会出现数据溢出,你可以尝试一下无符号双精度,或者设置其他条件限制
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式