求n!利用数组存储整数,以1000分段

img

你题目的解答代码如下:(如有帮助,望采纳!谢谢! 点击我这个回答右上方的【采纳】按钮)

#include <stdio.h>

void Factorial(int n);//声明函数Factorial

int main()//主函数,输入n的值
{
    int n;
    scanf("%d",&n);
    Factorial(n);//把n的值传给函数Factorial
    return 0;
}

void Factorial(int n)//定义函数Factorial
{
    int i,j;//定义循环变量
    int temp;//定义中间结果变量
    int carry;//定义进位数变量
    int len=1;//定义结果长度变量
    int a[10000]={0};//定义结果数组
    a[0]=1;//初始结果为1
    for (i=2;i<=n;i++)//循环n次,求n的阶乘
    {
        carry=0;//使每次进位数为零
        for (j=0;j<len;j++)//保存每一位数字并判断结果是否需要增长
        {
            temp=a[j]*i+carry;//计算中间结果
            a[j]=temp%10;//保存每一位数字,从后往前
            carry=temp/10;//计算进位数
            if (j>=len-1 && carry>0)//判断结果是否需要增长
            {
                len++;
            }
        }
    }

    for (i=len-1;i>=0;i--)//输出最终结果
    {
        printf("%d",a[i]);
    }
}

img