c语言,求1!+2!+3!+4!+5!+....+n!

2024-12-02 22:32:14
推荐回答(5个)
回答1:

这里的关键是要有一个变量能存储下n!和整个的和,普通int型和long int型变量范围都很小,所以建议用double型变量。
你的程序虽然提示输入数据到变量n,但没有调用输入语句输入,应当:
printf("input a number:"); scanf("%d",&n);
你用sum变量保存累加和,这是正确的,但每项的阶乘值没有变量来保存是个问题,要知道阶乘也是一个累乘的结果,而i*i并不是n的阶乘而是n的平方。当前项等于前边相乘以当前的i值,这个累乘变量的起始值为1。
建议:
int i,n;
double sum,m;
...
sum=0; m=1; //变量m计算当前项即阶乘值
for ( i=1;i<=n;i++ ) { m*=i; s+=m; }
printf("sum=%.0lf\n",sum);
但请注意,仍有n过大无法计算的问题存在。

回答2:

#include "stdio.h"
int main()
{
    int i,n,sum,k=1;
    printf("input a number:",n);
    scanf("%d",&n);//输入语句
sum=0;
for(i=1;i<=n;i++)
{
            k=k*i;
           sum+=k;
 }
printf("sum=%d\n",sum);
return 0;
}

回答3:

#include
int FactorialAdd (int num)
{
if (num == 1 || num == 0) {
return 1;
}
else
return num * FactorialAdd(num - 1);
}

int main()
{
//运行程序的时候,请把n换成你想要的数字;
int i, n, sum = 0;
for (i = 1; i <= n; i++) {
sum += FactorialAdd(i);
}
printf("sum = %d\n", sum);
return 0;
}
此处用到一个简单的递归算法

回答4:

#include 

int foo(int n) {
    int i, sum = 1;
    for(i=1;i<=n;i++)
        sum*=i;

    return sum;
}

int main()
{
    int i, n, sum = 0;

    printf("input a number:");
    scanf("%d", &n);

    for (i=1; i<=n; i++)
        sum += foo(i);

    printf("sum=%d\n",sum);

    return 0;
}

回答5:

#include"stdio.h"
int fun(int p){
    int i=1,sum=1;
    for(i=1;i<=p;i++){
        sum *= i;
    }
    return sum;
}
int main()
{
int i,n,sum;
    printf("input a number:",n);
 sum=0;
for(i=1;i<=n;i++)
sum+= fun(i);       //修改的地方
printf("sum=%d\n",sum);
return 0;
}