c语言for循环,一个例子看不懂,谁能帮忙解释一下,谢谢。

#include<stdio.h>intmain(){doubleSn=0,k;intn,i,j;scanf("%d",&n);for(i=1;i<=n;i++){k=1... #include<stdio.h>

int main()

{

double Sn=0,k;

int n,i,j;

scanf("%d",&n);

for(i=1;i<=n;i++)

{

k=1;

for(j=1;j<=i;j++)

k=k*j;

Sn+=k;

}

printf("%.0lf",Sn);

return 0;

}
展开
 我来答
百度网友e096309
2017-11-06 · TA获得超过1327个赞
知道小有建树答主
回答量:501
采纳率:96%
帮助的人:416万
展开全部

我觉得,书里这种命名方式放到公司里是要被批的体无完肤的。不过话说回来,咱还得硬着头皮学不是。

其实最主要的是看懂每个变量表示什么意思。

n是用户输入的数。然后循环n次。i依次等于[1,2,3,...,n]

这层循环还是比较好理解的。用户输入几,就循环几次其中 i 就表示第几次循环了

然后是跟k和j相关的这一段内层循环:

k=1;
for(j=1;j<=i;j++)
    k=k*j;

k初始值是1,然后内层循环 i 次,j表示内层循环到第几次了。k依次等于上一次的k乘以j。

也就是说:

第1次内层循环执行完,k等于1。

第2次内层循环执行完,k等于1*2。

第3次内层循环之行完,k等于1*2*3。

执行i次。也就是k等于1*2*3*...*i。其实就是i!啦(i的阶乘)。

重点:k等于i的阶乘。

然后,Sn+=k;就是Sn表示i的阶乘的累加。

最后,根据上面标黑的文字,应该能得出来结论了,这个程序是让用户输入n,然后求1!+2!+3!+...+n!。

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式