C语言基础编程纠错

利用泰勒级数:sinx=x-x3/3!+x5/5!-x7/7!………………计算sinx,要求最后一项绝对值小于10-5次方。并累计加了多少项,。。。
#include <stdio.h>
#include <math.h>
float main()
{
int x;
float term,xiang,count=0,n=0,ans=0;
printf("please enter x:\n");
scanf("%d",&x);
term=-1/x;
do{
count++;
term=-term*x*x/n*(n+1);
xiang=term/n;
n=n+2;
ans=ans+term;
}while(fabs(term)>=1e-5);
printf("sinx=%f",ans);
printf("count = %d",count);
}

就是不行!

这显然不行。n初始值为0的时候,你就做了term=-term*x*x/n*(n+1),发生除数为0的执行错误。另外还有很多小错误,比如上式应该是term=-term*x*x/(n*(n+1)),等等。

建议:
1.规范各变量的类型。比如term、xiang、ans应该是float型,而count、n应该是整形,否则对你的count++不知道编译程序要怎么处理。至于x,则int或float型随意。
2.main函数没有必要声明为float类型。

整段修改如下:

#include <stdio.h>
#include <math.h>
void main()
{
int count=1, n=2;
float x,term,ans;
printf("please enter x:\n");
scanf("%f",&x);
ans = x;
term = x;
do{
count++;
term=-term*x*x/(n*(n+1));
n =+ 2;
ans += term;
}while(fabs(term)>=1e-5);
printf("sinx=%f, count=%d\n",ans,count);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2010-11-16
#include <stdio.h>
#include <math.h>
float main()
{
int x;
float term,count=1,n=1,ans=0;
printf("please enter x:\n");
scanf("%d",&x);
term=(float)x;
ans=term;
do{
count++;
term=-term*x*x/((n+2)*(n+1));
n=n+2;
ans=ans+term;
printf("%f\n",term);
}while(fabs(term)>=1e-5);
printf("sinx=%f\n",ans);
printf("count = %d\n",count);
}本回答被网友采纳
相似回答