1.进位

int s=c[j]*i+jw;
jw=s/10;
c[j]=s%10;

源码

#include <stdio.h>
#include <string.h>
#define Max 3000
void multiply(int n);
int main()
{
int n;
scanf("%d",&n);
factorial(n);
}
void factorial(int n){
int c[Max]={0};
c[0]=1;
for(int i=2;i<=n;i++){
int jw=0;
for(int j=0;j<Max;j++){
int s=c[j]*i+jw;
jw=s/10;
c[j]=s%10;
}
}
int len=Max;
for(int i=len-1;i>=0;i--)
{
if(c[i]==0&&len>1)
len--;
else
break;
}

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

以上代码仅供参考