这是因为在C语言中,两个整数的商仍是一个整数,所以,任何“真分数”的除法,在C语言中所得到的商都是0。所以,在你的程序中,循环体中,除了第一项,1/1=1外,1/2=0,1/6=0,1/24=0,……,所以最后的结果就是1.000000
下面已经给出了最小修改的方案,1.0/……,这样系统在做除法时,会把分母也转换为浮点数,然后做除法,就能得到正确答案了。最好的方法是,把int fact(int n)改为double fact(int n)
并把int m=1;改为double m=1;float t,u;改为double t,u;