算法不复杂,先计算阶乘,调用计算阶乘的函数int functiong(int n){ int result=1; while(n) { result=result*n; n--; } return result;
}阶乘结果很容易超过整形数据的范围,你可以考虑用长整形数据来保存结果。然后统计计算结果中的0的个数。这个可以用余数的方法来做。调用个统计结果中0的个数的函数int count(int m){ int i=0; int k; while(m) { k=m%10; if(k==0) i++; //统计阶乘结果中,0的个数。 m=m/10; } return i;} 主函数需要输入自然数n和调用两个函数的东西我就不写了。希望你能看下这个过程,我觉得这比单纯给你完整代码,效果要好一些。代码未在VC6.0上测试,不过应该是没问题的。如有任何问题,请及时提出。
#include
void main()
{
int n;
double mul=1;
int i;
int sum=0;
printf("请输入n:");
scanf("%d",&n);
for(i=1;i<=n;i++)
{
mul=mul*i;
}
int m=(int)mul;
while(m>0)
{
if((int)m%10==0) sum++;
m=m/10;
}
printf("n!=%d,其中有%d个0\n",(int)mul,sum);
}
一个把