#include <stdio.h> #define N 10000 int main(int argc, char **argv) { int data[N] = {1}; int digit, i, index, carry; int tmp; for (i=2, digit=0; i<=10000; i++) //计算1000! { for(index=0, carry=0; index<=digit; index++) { tmp=data[index]*i+carry; data[index]=tmp%10000; carry=tmp/10000; } while (carry) { data[++digit]=carry % 10000; carry /= 10000; } } printf("%d", data[digit]); for (i=digit-1; i>=0; i--) { printf("%04d", data[i]); // 控制数组格式! } return 0; }