C语言求1!+2!+3!+4!+5!+6!

#include <stdio.h>
int fac(int n)
{int f;
for(f=1;f<=n;f++)
f=f*n;
return f;
}
void main()
{int fac(int n),sum=0;
int i;
for(i=1;i<=6;i++)
sum=sum+fac(i);
printf("sum=%d\n",sum);
}
哪里错了

int fac(int n)
{int f;
for(f=1;f<=n;f++)
f=f*n;
return f;
}
这里面的循环变量和累加变量用混了,把1带入最后返回为2,2带入返回为3
最后答案相当于2+3+4+5+6+7
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-02
for(f=1;f<=n;f++)
f=f*n;
出现错误,可以改写成:
f=0;
for(int i=1;i<=n;i++)
f=f*i;(不能使用n,n是固定植,常数)
第2个回答  推荐于2018-04-16
int fac(int n)
{int f;
for(f=1;f<=n;f++)
f=f*n;
return f;
}
上面这个函数写的有问题,用下面的:
int fac(int n)
{int f;
int s=1;
for(f=1;f<=n;f++)
s=s*f;
return s;
}本回答被提问者和网友采纳
第3个回答  2012-12-02
int FacFunc(int n)
{
int nSum = 0;
int nTemp = 1;
for (int i = 1; i <= n; i++)
{
nTemp *= i;
nSum += nTemp;
}

return nSum;
}
一个for循环可以搞定
第4个回答  2012-12-02
阶乘的算法错了。
int fac(int n)
{int f, a=1;
for(f=1;f<=n;f++)
a*=f;
return a;
}
相似回答