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

上机实习题:

算法实现:

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

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

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

第1个回答  2019-10-07
#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的原理
第2个回答  2019-02-01
#include
<stdio.h>
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);
}
第3个回答  2009-06-30
#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);
第4个回答  2009-06-30
#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的原理本回答被提问者采纳

输入一个自然数n,求n!,同时统计结果中有多少个0.
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*...

输入一个自然数n,求n!,同时统计结果中有多少个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和调用两个函数的东西我就不写...

用C语言输入一个自然数n,求n!,同时统计结果中有多少个0
nStr[0]='1',nStr[1]=0; printf("输入一个自然数n,求n!\\n");

输入一个自然数n,求n!,同时统计结果中有多少个0程序分析解释
scanf("%d",&n); \/*输入一个整数N*\/ i=fun (n); \/*求N!未尾0的个数*\/ k=jc (n); \/*求N!*\/ printf("%d! is %10.0f\\nthere are %d zero!\\n",n,k,i); \/*输出结果*\/ } int fun(int x)\/*定义fun函数*\/ { int i=0;while(x!=0)\/*请参照求2008!未尾0的个数...

...输入一个自然数n,求 n!,同时统计结果中有多少个0。
int i=0; \/\/存放0的个数 while(m>=10){ if(m%10==0)i++;m\/=10;} return i;} void main(){ int n;cin>>n;cout<<"n!="<<factorial(n)<<endl;cout<<"n!结果里0的个数有:"<<account(factorial(n))<<endl;} 运行过了,时间关系,算法没有优化...另外,计算范围有限......

输入一个自然数n,求n!,同时统计结果中有多少个0
由于位数的关系只能算到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的原理,自己想一下,这个函数可以算很多数。

输入一个自然数n,求n!,同时统计结果中有多少0的流程图
开始 ↓ 输入n,a ↓ n=1*2*3*…*n ↓ 输出n ↓ a=n中有几个0?↓ 输出a ↓ 结束 !!!

c++编程:输入一个自然数n,求 ,同时统计结果中有多少个0。
std;int Calc(int k){ int ss=0;int sum=0;while(k != 0){ ss = k%10;if(ss == 0)sum++;k = (k-ss)\/10;} return sum;} int Calc(int);void main(){ int a,k;cout<<"请输入一个自然数:";cin>>k;a = Calc(k);cout<<"这个自然数中0的个数为:"<...

vb,输入一个自然数n,求n!同时统计结果中有多少个0
a=val(inputbox("请输入一个数"))b=1 for i=1 to a b=b*i next i for j=1 to len(str(b))if mid(str(b),j,1)="0" then c=c+1 end if next j print str(a) & "!=" & str(b)print "有" & str(c) & "个0"

用vb解:输入一个自然数n,求 ,同时统计结果中有多少个0.
求啥???你好像没打出来。。。只要统计结果有多少个0。。我用个土方法把。。dim MStr as string MStr=cstr(Sum) 'Sum代表统计结果 dim ICount as integer,I as integer I=instr(MStr,"0")while I>0 ICount=ICount+1 I=instr(I,MStr,"0")wend msgbox "统计结果共有:" & ICount &...

相似回答