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


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

#include 

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)//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]);
    }
}

TRANSLATE with x English
Arabic Hebrew Polish
Bulgarian Hindi Portuguese
Catalan Hmong Daw Romanian
Chinese Simplified Hungarian Russian
Chinese Traditional Indonesian Slovak
Czech Italian Slovenian
Danish Japanese Spanish
Dutch Klingon Swedish
English Korean Thai
Estonian Latvian Turkish
Finnish Lithuanian Ukrainian
French Malay Urdu
German Maltese Vietnamese
Greek Norwegian Welsh
Haitian Creole Persian  
Bing Webmaster Portal Back

相关