求任意数的阶乘 #include "stdafx.h" #include <iostream> #include <windows.h> #include <math.h> using namespace std; int fac[1000]; int add[1000]; int bit_compute(int n) { // //算(n-1)!的位数 double dbBit=0.0; for (int i=2;i<n;++i) { dbBit+=log10(i); } return ((int)dbBit)+10; } void J(int n) { if (n==1) { fac[1]=1; return; } int nBit= bit_compute(n); for (int j=1;j<=nBit;j++) { add[j]=(fac[j]*n+add[j-1])/10; fac[j]=(fac[j]*n+add[j-1]) % 10; } } void print_result(int n) { BOOL bStartOver=FALSE; int nBit=bit_compute(n)+5; for (int i=nBit;i>=1;--i) { if ( bStartOver) { cout<<fac[i]; continue; } if (fac[i]) { cout<<fac[i]; bStartOver=TRUE; } } cout<<endl; } int main(int argc, char* argv[]) { int n=10; ZeroMemory(fac,1000*sizeof(int)); ZeroMemory(add,1000*sizeof(int)); for (int i=1;i<=n;++i) { J(i); ZeroMemory(add,1000*sizeof(int)); } print_result(n); system("pause"); return 0; } 那些用VC的不堪回首的往事,呵呵!