#include <stdio.h> |
|
int main(void) |
{ |
int data[40]; |
int digit; |
int i,j,r,k; |
int N; |
|
for( i=1; i<40; i++) |
data = 0; |
|
data[0] = 1; /* 0!=1 */ |
digit = 1; /* 初始为 1 位 */ |
|
printf("Enter a number what you want to calculus: "); |
scanf("%d", &N); |
|
for(i=0; i<N; i++) /* i 为级数,如求 7!, 则 i 为1,2,3..7*/ |
{ |
for(j=0; j<digit; j++) |
data[j] *= (i+1); /* 每级相乘处理,如 7x6! ,这里 i=7,整个数组代表的值为 6!*/ |
|
for(j=0; j<digit; j++) |
{ |
if( data[j] >= 10 ) |
{ |
for(r=0; r<digit; r++) |
{ |
if( data[digit-1] >= 10 ) |
digit++; /* 累计位数 */ |
|
data[r+1] += data[r]/10; /* 取出商并递送到下一元素 */ |
|
data[r] = data[r] % 10; /* 留下余数 */ |
} |
} |
} |
|
} |
printf("%d! = ",i); |
|
for(k=digit; k>0; k--) |
printf("%d",data[k-1]); |
|
printf("
"); |
|
return 0; |
|
} |
|