用字符串数组实现的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; }