C语言实现高阶阶乘(1000的阶乘C语言实现)

由于C语言的变量的大小的限制,使用已有变量无法保存阶乘结果,所以使用数组保存结果,从而使得无法保存的结果得以保存。

#include <stdio.h>

void Print_Factorial ( const int N );

int main()
{
    int N;

    scanf("%d", &N);
    Print_Factorial(N);
    return 0;
}
//具体实现函数
void Print_Factorial ( const int N )
{
    int a[3000];//存放阶乘结果的数组

    if(N<0)
        printf("Invalid input\n");
    else if(N==0)
        printf("1");
    else
    {
        int i,j,tmp;
        int W=0,k=0;//W进位,k数的位数
        tmp=N;
        for(i=0;tmp!=0;i++)//将计算的数N,存放于数组
        {
            a[i]=tmp%10;
            tmp=tmp/10;
            k++;
        }

        for(j=N-1;j>0;j--)//计算阶乘
        {
            for(i=0;i<k;i++)//N-1乘以N的每一位
            {
                tmp=a[i]*j+W;
                a[i]=tmp%10;
                W=tmp/10;
            }
            while(W)//判断最高位进位
            {
                a[i]=W%10;
                i++;
                W=W/10;
                k++;
            }
        }
        for(j=k-1;j>=0;j--)//显示阶乘
            printf("%d",a[j]);
    }
}

 

 

posted @ 2022-01-26 15:48  JianYuBlog  阅读(648)  评论(0编辑  收藏  举报