C语言实现高阶阶乘(1000的阶乘C语言实现)
由于C语言的变量的大小的限制,使用已有变量无法保存阶乘结果,所以使用数组保存结果,从而使得无法保存的结果得以保存。
#include <stdio.h> void Print_Factorial ( const int N ); int main() { int N; scanf("%d", &N); Print_Factorial(N); return 0; } //具体实现函数 void Print_Factorial ( const int N ) { int a[3000];//存放阶乘结果的数组 if(N<0) printf("Invalid input\n"); else if(N==0) printf("1"); else { int i,j,tmp; int W=0,k=0;//W进位,k数的位数 tmp=N; for(i=0;tmp!=0;i++)//将计算的数N,存放于数组 { a[i]=tmp%10; tmp=tmp/10; k++; } for(j=N-1;j>0;j--)//计算阶乘 { for(i=0;i<k;i++)//N-1乘以N的每一位 { tmp=a[i]*j+W; a[i]=tmp%10; W=tmp/10; } while(W)//判断最高位进位 { a[i]=W%10; i++; W=W/10; k++; } } for(j=k-1;j>=0;j--)//显示阶乘 printf("%d",a[j]); } }