6-10 阶乘计算升级版 (20分)

本题要求实现一个打印非负整数阶乘的函数。

函数接口定义:
void Print_Factorial ( const int N );

其中N是用户传入的参数,其值不超过1000。如果N是非负整数,则该函数必须在一行中打印出N!的值,否则打印“Invalid input”。

输入样例:
15

输出样例:
1307674368000

<模拟手算>

void Print_Factorial ( const int N )
{
    static int a[1000000];
    int i,j;
    int temp,jw;
    int len=1;
    a[1]=1;
    for(i=2;i<=N;i++)
    {
        jw=0;
        for(j=1;j<=len;j++)
        {
            temp=a[j]*i+jw;//中间量
            a[j]=temp%10;//实际保留
            jw=temp/10;//进位
            if(j==len&&jw!=0)
                len++;
        }
    } 
    if(N<0)
        printf("Invalid input\n");
    else
    {
    for(i=len;i>=1;i--)
        printf("%d",a[i]);
    printf("\n");
    }
    return 0;
}

发布了5 篇原创文章 · 获赞 5 · 访问量 90

猜你喜欢

转载自blog.csdn.net/m0_46200758/article/details/104004781