C语言求n!(n的阶乘) 非常急!!!!!!
输入一个自然数n,求n!,同时统计结果中有多少个0.麻烦高手帮忙做个可运行的程序,非常感谢!!!...
输入一个自然数n,求n!,同时统计结果中有多少个0. 麻烦高手帮忙做个可运行的程序,非常感谢!!!
展开
6个回答
展开全部
#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的原理,自己想一下,这个函数可以算很多数。
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的原理,自己想一下,这个函数可以算很多数。
展开全部
#include<stdio.h>
int jc(int n)
{
if(n)
return n*jc(n-1);
else
return 1;
}
int fun(int m)
{
int t=0;
while(m/10)
if(m%10==0)
{
t++;
m=m/10;
}
return t;
}
void main()
{
int n,m,cnt;
printf("输入一个自然数n:");
scanf("%d",&n);
m = jc(n);
cnt = fun(m);
printf("%d!=%d\n共有%d个0\n",n,m,cnt);
}
int jc(int n)
{
if(n)
return n*jc(n-1);
else
return 1;
}
int fun(int m)
{
int t=0;
while(m/10)
if(m%10==0)
{
t++;
m=m/10;
}
return t;
}
void main()
{
int n,m,cnt;
printf("输入一个自然数n:");
scanf("%d",&n);
m = jc(n);
cnt = fun(m);
printf("%d!=%d\n共有%d个0\n",n,m,cnt);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <iostream.h>
main()
{
int i,n,ct=0;
long result=1;
cin>>n;
for(i=n;i>=1;i--)
result=result*i;
cout<<n<<"!="<<result<<endl;
for(;result/10!=0;)
{
if(result%10==0)
{ct++;result=result/10;}
else break;
}
cout<<"共有"<<ct<<"个0"<<endl;
}
main()
{
int i,n,ct=0;
long result=1;
cin>>n;
for(i=n;i>=1;i--)
result=result*i;
cout<<n<<"!="<<result<<endl;
for(;result/10!=0;)
{
if(result%10==0)
{ct++;result=result/10;}
else break;
}
cout<<"共有"<<ct<<"个0"<<endl;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
int
i,n,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
//这里多了个分号..
sum*=i;
//必须用另外一个变量来存储阶乘的结果.因为i是用来控制循环的.
printf("%d",sum);
getch();
}
main()
{
int
i,n,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
//这里多了个分号..
sum*=i;
//必须用另外一个变量来存储阶乘的结果.因为i是用来控制循环的.
printf("%d",sum);
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include<stdio.h>
main()
{
int
i,n,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
//这里多了个分号..
sum*=i;
//必须用另外一个变量来存储阶乘的结果.因为i是用来控制循环的.
printf("%d",sum);
getch();
}
main()
{
int
i,n,sum=1;
scanf("%d",&n);
for(i=1;i<=n;i++)
//这里多了个分号..
sum*=i;
//必须用另外一个变量来存储阶乘的结果.因为i是用来控制循环的.
printf("%d",sum);
getch();
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询