这里的关键是要有一个变量能存储下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过大无法计算的问题存在。
#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;
}
#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;
}
此处用到一个简单的递归算法
#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;
}
#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;
}