1;n--){for(c=0,i=0;i{a[i]=(c+=a[i]*n)%10000;/*每个数组保存四位数字*/c/=10000;}((a[i]=c)>0)?le" />

求100的阶乘(大数)

#include
int main(void)
{
long a[9000]={1,0},i,c,len,pos=1;
int n;

printf("请输入要计算的阶乘的数:\n"); /*输入要求的数的阶乘的数*/
scanf("%d",&n);

pos=n;

for(len=1;n>1;n--)
{
for(c=0,i=0;i{
a[i]=(c+=a[i]*n)%10000; /*每个数组保存四位数字*/
c/=10000;
}

((a[i]=c)>0)?len++:0; /*判断最后一个是否有进位,有的话len加一,多一个数组元素值,
并且就在当前的元素的下个数组位置直接等于进位值*/
}


printf("\n\n%d的阶乘:\n",pos);

for(len--,printf("%d",a[len--]);len>=0;len--) /*先输出首位,因为不需要在前面补齐0,所以在之前输入*/

printf("%04d",a[len]); /*%04d是将a[len]数中不足四位的用0补齐四位(首位以后的位)*/

printf("\n\n\n");


return 0;
}


相关文档
最新文档