c语言阶乘函数谭浩强 c语言基础谭浩强

C语言 编程题 使用函数递归调用编写N!(阶乘)——高手请导啊!

#include stdio.h

创新互联建站成都企业网站建设服务,提供成都网站制作、网站建设网站开发,网站定制,建网站,网站搭建,网站设计,成都响应式网站建设公司,网页设计师打造企业风格网站,提供周到的售前咨询和贴心的售后服务。欢迎咨询做网站需要多少钱:18980820575

int di(int n)

{

int i=1;

if(n==1)

return n;

else

return n*di(n-1) ;

}

int main()

{

int n;

scanf("%d",n);

printf("%d\n",di(n));

}

求教C语言大神大数阶乘!!

当数字大到一定程度的时候,阶乘的结果就已经超出了double所能表示的范围,必须用数组来存储运算结果,我们采用数组表示,阶乘的结果每四位存储在一个数组元素里面。

算法:阶乘的时候,先从数组的低位开始乘,超过四位数的部分(r[j]/10000)加到数组的下一个元素继续乘。

int数组每个元素保存四位数,10000以内的阶乘不会有问题

#include stdio.h

#define N 10000

int main()

{

static long int r[N]={1}; /*用long int 是为了保证16位编译器也正常*/

int i,j;

int k=0,l=0;

for(i=1;i=40;i++)

{

for(j=0;j=l;j++)

{

r[j]=r[j]*i+k;

k=r[j]/10000;

r[j]=r[j]%10000;

}

if(k)

{

l++;

r[j]=k;

k=0;

}

j=l;

printf("%d!=%d",i,r[j--]);

for(;j=0;j--)

{

printf("%04d",r[j]);

}

printf("\n");

}

return 0;

}

1!=1

2!=2

3!=6

4!=24

5!=120

6!=720

7!=5040

8!=40320

9!=362880

10!=3628800

11!=39916800

12!=479001600

13!=6227020800

14!=87178291200

15!=1307674368000

16!=20922789888000

17!=355687428096000

18!=6402373705728000

19!=121645100408832000

20!=2432902008176640000

21!=51090942171709440000

22!=1124000727777607680000

23!=25852016738884976640000

24!=620448401733239439360000

25!=15511210043330985984000000

26!=403291461126605635584000000

27!=10888869450418352160768000000

28!=304888344611713860501504000000

29!=8841761993739701954543616000000

30!=265252859812191058636308480000000

31!=8222838654177922817725562880000000

32!=263130836933693530167218012160000000

33!=8683317618811886495518194401280000000

34!=295232799039604140847618609643520000000

35!=10333147966386144929666651337523200000000

36!=371993326789901217467999448150835200000000

37!=13763753091226345046315979581580902400000000

38!=523022617466601111760007224100074291200000000

39!=20397882081197443358640281739902897356800000000

40!=815915283247897734345611269596115894272000000000

请按任意键继续. . .

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

#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的原理,自己想一下,这个函数可以算很多数。

C语言程序设计 谭浩强 为什么很多人说他害人

谭浩强的书真的是只适合二级的,基本上适合所有专业的人,如果你是计算机的,那他这本书真的只算是入门的。其实一门语言并不是很重要,重要的是算法,语言是死的,算法是有灵魂的

编写一个求阶乘的函数,用主函数实现1~10的阶乘累加和的求取和结果输出。用C语言

//∑n!

#includestdio.h

int main()

{

float Sn=0,n=1,i=1;

while(i=20)

{n=n*i;

i++;

Sn=Sn+n;}

printf("%f",Sn);

}


本文名称:c语言阶乘函数谭浩强 c语言基础谭浩强
URL地址:http://scyanting.com/article/hgejpg.html