怎么对一个数组内的数字进行阶乘并求和

include<stdio.h>

int main()
{
int jc(int a[10])
int i=0,n,a[10];
scanf("%d",&n);
for(i=0;n>0;i++)
{ a[i]=n%10;
n=n/10;
printf("%d ",a[i]);
}
int b=0;
for(i=10;i<10;i--)
printf("%d",a[i]);
b=jc(a);
printf("%d",b);
return 0;
}
int jc(int a[10])
{
int i;
for(i=0;i<10;i++)
a[i]-1!=0;
a[i]=a[i]*(a[i]-1);

大概在这里就进行不下去了



#include<stdio.h>

int main()
{
    int b = 0;
    int i, n, a[10];
    int jc(int);
    scanf("%d", &n);
    for (i = 0; n > 0; i++)
    {
        a[i] = n % 10;
        b += jc(a[i]);
        n = n / 10;
        printf("%d ", a[i]);
    }
    printf("%d", b);
    return 0;
}
int jc(int a)
{
    int i = 1;
    for (a; a > 1; a--)
        i = a * i;
    return i;
}

采用嵌套循环或者嵌套函数
嵌套循环

int factorial(int a[10])
{
    int sum=0,j,i;
    for(j=0; j<10; j++)
    {
        int m=1;
        for(i=1; i<=a[j]; i++)
        {
            m*=i;
            sum+=m;
        }
    }
    return sum;
}

嵌套函数

int factorial(int a[10])
{
    int sum=0,i;
    for(i=0; i<10; i++)
        sum+=sum(a[i]);
   
    return sum;
}
int sum(int n)
{
    int a=1;
    for(i=1; i<=n; i++)
    {
        a*=i;
        sum+=a;
    }
    return sum;
}