求n的阶乘(高精度)

为什么这串代码到33都是对的,34以后就都是错的了



#include<stdio.h>
int main()
{

    int n,i,a[999]={0},len=1,j;
    a[0]=1;
    scanf("%d",&n);
    for(i=1;i<n;i++)
    {
        int c=0;
        for(j=0;j<len;j++)
        {
            a[j]=a[j]*(i+1)+c;
            c=a[j]/10;
            a[j]=a[j]%10;

        }
        if(c!=0)
        {
            len++;
            a[j]=c;
        }

    }
    for(i=len-1;i>=0;i--)
        printf("%d",a[i]);

    return 0;
}

数太大了你就定义成long,或者更大的类型
int溢出了