#include <stdio.h>
int main()
{
int i,j,n,t;
long s=0;
scanf("%d",&n);
for(i=1;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)
t=t*j;
s=s+t;
}
printf("%ld",s);
return 0;
}
就是算1+1*2+1*2*3+1*2*3*4+...是吧,内层的循环是计算每组阶乘的,外层的控制循环次数并求和,比如说输入的n为3时
外层循环开始i=1
t=1
内层循环计算1到i的乘积t=t*j=1*1=1
s=s+t=0+1=1
外层循环i=2
t=1
内层循环计算1到i的乘积t=t*j=1*1=1 (j=1) t=1*2=2(j=2)
s=s+t=1+2=3
外层循环i=3
t=1
内层循环计算1到i的乘积t=t*j=1*1=1 (j=1) t=1*2=2(j=2) t=2*3=6(j=3)
s=s+t=3+6=9追问
外层循环开始i=1
t=1
内层循环计算1到i的乘积t=t*j=1*1=1
s=s+t=0+1=1
外层循环i=2
t=1
内层循环计算1到i的乘积t=t*j=1*1=1 (j=1) t=1*2=2(j=2)
s=s+t=1+2=3
外层循环i=3
t=1
内层循环计算1到i的乘积t=t*j=1*1=1 (j=1) t=1*2=2(j=2) t=2*3=6(j=3)
s=s+t=3+6=9追问
意思是在内层循环的时候
循环
t=t*j
然后等循环完毕就执行s=s+t
对吗???
对,内循环没有花括号,循环体只有后面那一句
温馨提示:答案为网友推荐,仅供参考