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

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

这里的关键是要有一个变量能存储下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过大无法计算的问题存在。
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-01-05
#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;
}

第2个回答  2015-01-05
#include <stdio.h>
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;
}
此处用到一个简单的递归算法
第3个回答  2015-01-05
#include <stdio.h>

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;
}

第4个回答  2015-01-05
#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;
}

c语言,求1!+2!+3!+4!+5!+...+n!
你的程序虽然提示输入数据到变量n,但没有调用输入语句输入,应当:printf("input a number:"); scanf("%d",&n);你用sum变量保存累加和,这是正确的,但每项的阶乘值没有变量来保存是个问题,要知道阶乘也是一个累乘的结果,而i*i并不是n的阶乘而是n的平方。当前项等于前边相乘以当前的i值,...

C语言:输入n,求1!+2!+3!+4!+5!+...+n!
int fun(int n){ int i,sum=1;for(i=1;i<=n;i++)sum*=i;return sum;} main(){ int i,sum=1;\/\/这里sum初始化应为0,这和上面函数乘是不一样,你可能没注意 int n;scanf("%d",&n);for(i=1;i<=n;i++){sum+=fun(i);} printf("%d\\n",sum);} ...

用C语言设计一个程序,求1!+2!+3!+4!+5!+…+n!
t; printf("Input n(int 0<n<13)...\\nn="); if(scanf("%d",&n),n<0 || n>12){ printf("Input error, the program exits...\\n"); exit(0); } for(sum=0,t=i=1;i<=n;sum+=t*=i+

C语言:求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。
include <stdio.h>int main(int argc, char *argv[]){ int s32MaxNum = 0; int s32NumIndex = 0; long long s64NumSum = 0; long long s64FactVal = 0; printf("请输入N:"); scanf("%d", &s32MaxNum); s64FactVal = 1; s32N...

C语言求Sn=1!+2!+3!+4!+5!+…+n!之值
应该是类型的问题,改为int型就可以了 include<stdio.h>int main(){ int i, n; int sum = 0, f = 1; scanf("%d", &n); for(i = 1; i <= n; i++) { f *= i; sum += f; } printf("%d\\n",sum); return 0;} ...

c语言编程,计算并输出以下算式的值:1!+2!+3!+4!+5!
include<stdio.h> void main(){ int sum=0,i,j=1;for(i=1;i<=5;i++){ j=i*j;sum+=j;} printf("1!+2!+3!+4!+5!=%d\\n",sum);}

1+2+3+4+5+.+ n!等于多少?
运算过程:1!=1 2!=1*2=2 3!=1*2*3=6 4!=1*2*3*4=24 5!=1*2*3*4*5=120 所以,1!+2!+3!+4!+5!连加的结果是153。阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积...

C语言用for循环算1!+2!+3!+4!+5! 我的程序为什么不对?
很明显s的值一直在变大,而不是你想要的求!1,!2,!3,!4,!5后再相加,每次计算的时候s的值都是在累乘的,所以最后的结果肯定会偏大。include <stdio.h>int main(){ int i,j,sum=0,s=1; for(i=1;i<=5;i++) {s=1; \/\/每次循环前先让s的值为初始值for(j=1;j<=i;j...

c语言程序1!+2!+3!+4!+5!
你的代码没错,只是没有累加 include "stdio.h"int main(){ int i;int fact();int s=0; \/\/定义一个和的结果变量 for(i=1;i<=5;i++) \/\/求1到5,不是0-4 { printf("\\40:%d!=%d\\n",i,fact(i));s += fact(i) ;\/\/累加各阶乘 } printf("\\40:sum=%d\\n" , s ); ...

C语言编程中 请问上s=1!+2!+3!+4!+5!```100!S 的和值 请帮我分析!是什...
即1*1 1*2 1*2*3 这种项。通过规律发现,项满足item*=i; 第一项:1*1 第二项:1*2 第三项:1*2*3 那么和也就是sum+=item.就这样分析,该题就很清楚了吧。c语言逻辑性比较强,需要多联系,学会自己多分析,即使有答案也要搞懂答案是这么来的,最后能够学以致用。

相似回答