一个c程序有点点错

来源:百度知道 编辑:UC知道 时间:2024/06/02 10:32:28
#include<stdio.h>
#include<math.h>
double fun(double x)
{
int i=0;
double s1=1.0,t=1.0,m=1.0,l=1.0,s0=0.0;
while((s1-s0)>=1e-6)
{
s0=s1;
i++;
t=t*(0.5-i+1);
m*=i;
l*=x;
s1+=t*l/m;
}
return s1;
}
void main()
{
double x,s;
printf("Input x:");scanf("%lf",&x);
s=fun(x);
printf("s=%f\n",s);
}
这个题目答案是输入:.0.21输出1.100000;但我的怎么不对啊!

在while()中最好为:
while(fabs(s1-s0)>=1e-6)
即求绝对值。
最后
printf("s=%f\n",s);
s为双精度数,输出格式为:
printf("s=%lf\n",s);
c语言可以很好的控制格式,如:
printf("s=%12.6lf\n",s);

不要紧张,这是C语言数据运算的弱点,误差总会有的。
你这个与答案的误差才0.0005左右,已经很好了

1换成2就好了 分太少不多说了