输入一个自然数n,求n!,同时统计结果中有多少个0.

来源:百度知道 编辑:UC知道 时间:2024/05/21 15:47:29
上机实习题:

算法实现:

输入一个自然数n,求n!,同时统计结果中有多少个0

用c来编写,不要用c#或者c++来编写啊,我只学了c

好了我会追加分数的,谢谢

#include<stdio.h>
#include<stdlib.h>
void main()
{
int n,i=0;
long int sn=1,t;
printf("请输入n的值:");
scanf("%d\n",&n);
for(i=1;i<=n;i++)
sn=sn*i;
t=sn;
while(sn!=0)
{
sn=sn/5;
i++;//累计0的个数
}
printf("%d的阶乘结果为\n",t);
printf("结果中0的个数为:%d",i);
}
用的是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的原理

#include "stdio.h"
void main()
{int n,i,jie=1,k,p=0,w,g=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
{jie=jie*i;}
printf("%d ",jie);
for(k=10;g<=1000;k*=10)
{ w=jie%k;
if(w==0) p++;
if(w!=0&&w<k/10) p++;
if((int)jie/k==0) break;
g++;
}
printf("%d",p);