c++语言 n的阶乘相加
#include<iostream.h>intmain(){intn,i,j,s=1,sum=0;cout<<"请输入n的值:";cin>>n;for(i=1;i<=n;...
#include<iostream.h>
int main()
{
int n,i,j,s=1,sum=0;
cout<<"请输入n的值:";
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
s=s*j;
}
sum+=s;
}
cout<<sum<<endl;
}
看看那步出问题了,结果不对啊 展开
int main()
{
int n,i,j,s=1,sum=0;
cout<<"请输入n的值:";
cin>>n;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
{
s=s*j;
}
sum+=s;
}
cout<<sum<<endl;
}
看看那步出问题了,结果不对啊 展开
3个回答
展开全部
第二个循环有问题,
s存储每一次阶乘的值,但没有初始化,举例:
当i=2时,计算得出s=2;
当i=3时,s=s*1*2*3=2*1*2*3=12,明显是错的
这些同楼上的看法,下面是我写的一个程序,你借鉴下吧(不需要初始化s,也只需单循环,比较较简单),求采纳(程序已经测试无误了)
#include<iostream.h>
int main()
{
int sum=0,s=1,i,n;
cout<<"请输入n的值:";
cin>>n;
for(i=1;i<=n;i++)
{
sum+=(s*i);
s*=i;
}
cout<<sum<<endl;
return 0;
}
s存储每一次阶乘的值,但没有初始化,举例:
当i=2时,计算得出s=2;
当i=3时,s=s*1*2*3=2*1*2*3=12,明显是错的
这些同楼上的看法,下面是我写的一个程序,你借鉴下吧(不需要初始化s,也只需单循环,比较较简单),求采纳(程序已经测试无误了)
#include<iostream.h>
int main()
{
int sum=0,s=1,i,n;
cout<<"请输入n的值:";
cin>>n;
for(i=1;i<=n;i++)
{
sum+=(s*i);
s*=i;
}
cout<<sum<<endl;
return 0;
}
展开全部
s存储每一次阶乘的值,但没有初始化,举例:
当i=2时,计算得出s=2;
当i=3时,s=s*1*2*3=2*1*2*3=12,明显是错的
自己应该会改吧?
另外:算下一个数的阶乘时,之前的结果可以保存起来,直接乘以当前值即可,没有必要再从1做一次循环了!自己思考下!
当i=2时,计算得出s=2;
当i=3时,s=s*1*2*3=2*1*2*3=12,明显是错的
自己应该会改吧?
另外:算下一个数的阶乘时,之前的结果可以保存起来,直接乘以当前值即可,没有必要再从1做一次循环了!自己思考下!
追问
for(j=1;j<=i;j++)
{
s=1;
s=s*j;
}
sum+=s;
我在上面初始化s=1 还不行 还是出错啊 呃呃呃
追答
看看楼下的代码,s每次存储的是当前循环变量的阶乘值,计算结果是正确的
但是过程有点小瑕疵,改成这样更好
for(i=2; i<=n; i++)
{
s = s * i;
sum += s;
}
这样修改基于两点:
1.1的阶乘为1,这个不用再计算了;
2.s存储的就是当前数的阶乘,很容易理解。而楼下的代码,每次循环多用了一次乘法运算,不易读懂!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
每次运算玩后,s要重新置1哈,亲
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询