#include <stdio.h> #define N 10 //计算N的阶乘,修改N的定义可计算10000以内任意数的阶乘 void main() { int a[N] = { 1 }, i, c, m, n; for( m = 0, n = N ; n > 1; n-- ) { for( i = c = 0; i <= m; i++ ) { // 将若低位容不下,则通过 C 来倒到高位。由 (a + b)c = ac + bc // 的结合律对每个位计算乘法 a[i] = ( c += a[i] * n ) % 10000; c /= 10000; // 对于早先的 16 位机,int 最大为 32767,所以 10000 // 对于 32 位机,则这个容限可以更大 } if ( a[i] = c ) m++; } printf ( "%d", a[m] ); for( c = m - 1; c >= 0; c-- ) { printf( "%04d", a[c] ); // 因为是 1e4 } printf ("/n"); system ("pause"); }