一个简单的求n!程序,

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

#include <stdio.h>

#include <malloc.h>

#define MAXN 1000

void pnext(int a[], int k)

{

int *b, m = a[0], i, j, r, carry;

b = (int *)malloc(sizeof(int) * (m + 1));

for (i = 1; i <= m; i++)

{

b[i] = a[i];

}

for (j = 1; j <= k; j++)

{

for (carry = 0, i = 1; i <= m; i++)

{

r = (i < a[0] ? a[i] + b[i] : a[i]) + carry;

a[i] = r % 10;

carry = r / 10;

}

if (carry)

{

a[++m] = carry;

}

}

free(b);

a[0] = m;

}

void write(int *a, int k)

{

int i;

printf("%4d! = ", k);

for (i = a[0]; i > 0; i--)

{

printf("%d", a[i]);

}

printf("\n\n");

}

void main()

{

int a[MAXN], n, k;

printf("Enter the number n: ");

scanf("%d", &n);

a[0] = 1;

a[1] = 1;

write(a, 1);

for (k = 2; k <= n; k++)

{

pnext(a, k);

write(a, k);

getchar();

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航