用字符串数组实现的1000以内的大数阶乘:
#include
#include
int max(int x,int y)
{
return x>y x:y;
}
int main()
{
int n,i,j,m,t,b,l;
while(scanf("%d",&n),n>0)
{
int buf[3000]={1},t=1;
char st ;
for(i=2;i<=n;i++)
{
int c=0;
for(j=0;j {
b=buf[j]*i+c;
c=b/10;
buf[j]=b%10;
itoa(c,st,10);
t=(c==0 t:max(j+1+strlen(st),t));
// printf("i=%d buf[%d]=%d b=%d t=%d\n",i,j,buf[j],b,t);
}
}
for(i=t-1;i>=0;i--)
printf("%d",buf[i]);
printf("\n");
}
return 0;
}