C语言求n!(n的阶乘)

来源:百度知道 编辑:UC知道 时间:2024/05/21 06:52:42
输入一个自然数n,求n!,同时统计结果中有多少个0. 麻烦高手帮忙做个可运行的程序,非常感谢!!!

#include "stdio.h"
void main()
{
int fun(int x);
float jc(int x);
int n,i;
float k;
printf("type in the n!\n");
scanf("%d",&n);
i=fun (n);
k=jc (n);
printf("%d! is %10.0f\nthere are %d zero!\n",n,k,i);
}

int fun(int x)
{
int i=0;
while(x!=0)
{
x=x/5;
i+=x;
}
return (i);
}

float jc(int x)
{
float i;
if (x==0||x==1)
i=1;
else
i=jc(x-1)*x;
return (i);
}
阶乘jc()函数是仿照谭浩强的c程序设计编写的,由于位数的关系只能算到12!你可以自己改精度

求零部分是自己想出来的,用的是n!=1*2*3*4*5*6*7*8*9*10*11……=1*2*3*(2*2)*5*(2*3)*7*(2*2*2)*(3*3)*(2*5)*11……

后面的式子中有几个5就有 就会得到几个末位0的原理,自己想一下,这个函数可以算很多数。