#include
using namespace std;
int main ()
{
int n;double sum=0.0,k=1.0;//最好是用double,因为13!超过了int的范围
cin >> n;
if(n==0) {cout<<1;return 0;}//数学里0!=1
for(int i=1;i<=n;i++)
{
k*=i;
cout<
}
cout << sum<
}
求阶乘可以写一个递归函数。你写的程序中嵌套使用for,由于k是全局变量,使得k*=i语句不是求阶乘,。如果要用for嵌套可以这样(把k定义为局部变量,也要把k*=i改为k*=j):
#include
using namespace std;
int main ()
{
int n,i,count=0;
cin >> n;
if(n==0) {cout<<1;return 0;}//数学里0!=1
for(i=1;i<=n;i++)
{
for(int j=1,k=1;j<=i;j++)
k*=j;
cout<
}
cout << count<
}
再或者:
#include
using namespace std;
int main ()
{
int n,i,j,k,count=0;
cin >> n;
if(n==0) {cout<<1;return 0;}//数学里0!=1
for(i=1;i<=n;i++)
{
k=1;
for(j=1;j<=i;j++)
k*=j;
cout<
}
cout << count<
}
1、只需要单层循环即可,一次循环可以一次计算a=i!,sum=∑i!
2、例程:
/*
计算N的阶乘的和
*/
#include
#define N 10
main ()
{
long i,j,a=1,sum=0;
for(i=1;i<=N;i++)
{
a*=i;
sum+=a;
}
printf("sum=%ld\n",sum);
}
运行的结果为4037913
#include
#define N 20
int JC(int x)
{
if(x==1)
return 1;
else
return x*JC(x-1);
}
void main()
{
int i,j,k,sum=0;
for(i=1;i<=N;i++)
{
sum+=JC(i);
}
cout<
k没有初值,int k = 1就可以了
cout << k不是count
#include
using namespace std;
int main(void)
{
int sum = 2;
int total = 1;
int x = 0;
cin >> x;
for (int n = 2; n <= x; ++n)
{
for (int i = 2; i <= n; ++i)
{
total *= i;
}
sum += total;
total = 1;
}
cout << sum << endl;
return 0;
}