c语言 论坛

来源:百度知道 编辑:UC知道 时间:2024/09/21 06:30:07
麻烦大家看一下这个题目:
6.求下列多项式的值,直到最后一项的绝对值小于10-6,
1/2!-3/4!+5/6!-7/8!......;
我的程序如下:

#include<stdio.h>
#include<math.h>
int fac(int n);
main()
{float sum=0,t;
int k=1;
int sign=1;
do
{t=(sign*k)/fac(k+1);
sum=sum+t;
sign=-sign;
k=k+2;
}while(fabs(t)>=1e-6);
printf("sum=%f\n",sum);
}
int fac(int n)
{int i,f=1;
for(i=1;i<=n;i++)
f=f*i;
return f;
}

但运行结果却是0,不知道怎么回事,想让大家帮我分析一下,谢谢了

你这个用的是整数除法,只会取整,而会把小数的部分去掉。k是整形的,sign是整形的,而你那个的函数的返回值还是整形的,而且上面的数总是比下面的数小,因此所有项的结果都是零,那么最后的结果也就是零了。