//计算大数阶乘的方法,利用这种方法可以计算任何阶乘 #include <stdio.h> void Factorial(int n);//声明函数Factorial int main() { //主函数,输入n的值 int n; while (scanf("%d", &n) != EOF) { Factorial(n);//把n的值传给函数Factorial } return 0; } void Factorial(int n) { //定义函数Factorial int i, j; //定义循环变量 int temp;//定义中间结果变量 int carry;//定义进位数变量 int len = 1; //定义结果长度变量 int a[10000] = {0}; //定义结果数组 a[0] = 1; //初始结果为1 for (i = 2; i <= n; i++) { //循环n次,求n的阶乘 carry = 0; //使每次进位数为零 for (j = 0; j < len; j++) { //保存每一位数字并判断结果是否需要增长 temp = a[j] * i + carry; //计算中间结果 a[j] = temp % 10; //保存每一位数字,从后往前 carry = temp / 10; //计算进位数 if (j >= len - 1 && carry > 0) { //判断结果是否需要增长 len++; } } } for (i = len - 1; i >= 0; i--) { //输出最终结果 printf("%d", a[i]); }printf("\n"); }