C语言 泰勒公式的sinx问题

求sinx=x-x3/3!+x5/5!-……(-1)n+1x2n-1/(2n-1)!终止条件:最后一项(-1)n+1x2n-1/(2n-1)!的绝对值小于10的-6次方我... 求sinx =x-x3/3!+x5/5!-…… (-1)n+1 x2n-1 /(2n-1)! 终止条件:最后一项 (-1)n+1 x2n-1 /(2n-1)!的绝对值小于10的-6次方

我自己编写的程序如下:
#include <stdio.h>
#include <math.h>
main()
{
int i,b=1;
float x,a,s;

printf("输入x的值");
scanf("%f\n",&x);
x=a;
for(i=1;;i++)
{
s=0;
a=-a*x*x;
b=b*2*i*(2*i-1);
s=s+a/b;

if(fabs(a/b)<1e-6) break;
printf("%d",s);
}
}

那位高手帮帮我看下错那里?
如果错太多情帮忙重写
题目要求必须有以下关系变量,i是项数
a=-a*x*x; a的初值为x
b=b*2*i*(2*i-1); b的初值为1
函数要用此关系式 s=s+a/b;
Draconious 你运行没有结果啊...
展开
 我来答
Draconious
2009-05-19 · TA获得超过6242个赞
知道大有可为答主
回答量:2142
采纳率:0%
帮助的人:2595万
展开全部

x=a x在这里又变成了0

printf("%f",s); 为什么要把浮点数输出为整数?

b=b*2*i*(2*i-1);这个式子就是错的

#include <stdio.h>

#include <math.h>

int main()

{

int i=1,b=1;

float x,a,s=0;

printf("输入x的值");

scanf("%f",&x);

a=x;

while(fabs(a/b)>=1e-6){

s+=(a/b);

a=-1*a*x*x;

b=b*2*i*(2*i+1);

i++;

}

printf("%f",s); 

return 0;

}

这是我运行的结果,代码是C++版本,因为我的VC不能写C。

这个算法有个致命的缺点,你不能输入比1.7打的数,否则无法得到结果。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式