问题描述
- for语句的镶嵌是怎么回事?
- int ntijsum=0;
scanf(""%d""&n);
for(i=1;i<=n;i++)
{
t=1;
for(j=1;j<=i;j++)t=t*j; sum=sum+t;
}
printf(""%d""sum);
system(""pause"");
解决方案
首先这段代码的功能是执行楼上所说的计算:1!+2!+3!+...+n! 的和
然后运行情况:
(注:for循环中,如果不加大括号,默认的只执行for后的一个语句)
假设:n=4;
1.进入for(i=1;i<=n;i++)中:
i=1;t=1;
进入for(j=1;j<=i;j++)中:
j=1;(满足j<=i)
t=t*j;(注:t=1*1=1)
此次for(j=1;j<=i;j++)中的语句执行完,j++;j=2;不满足j<=i;
for(j=1;j<=i;j++)循环结束
执行sum=sum+t;(注:sum=0+1*1=1*1)
此次for(i=1;i<=n;i++)中的语句执行完,i++;i=2;满足i<=n;
2.再次进入for(i=1;i<=n;i++)循环:
i=2;t=1;
进入for(j=1;j<=i;j++)中:
j=1;(满足j<=i)
t=t*j;(注:t=1*1=1)
此次for(j=1;j<=i;j++)中的语句执行完,j++;j=2;满足j<=i;
t=t*j;(注:t=1*1*2=1*2;)
此次for(j=1;j<=i;j++)中的语句执行完,j++;j=2;不满足j<=i;
for(j=1;j<=i;j++)循环结束
执行sum=sum+t;(注:sum=1*1+1*2即sum=1!+2!)
此次for(i=1;i<=n;i++)中的语句执行完,i++;i=2;满足i<=n;
3.再一次进入for(i=1;i<=n;i++)循环:
i=3;t=1;
进入for(j=1;j<=i;j++)中:
......
如上循环下去,直到
此次for(i=1;i<=n;i++)中的语句执行完,i++;i=6;不满足i<=n;
for(i=1;i<=n;i++)循环结束;
后话:运行情况可通过调试,一步一步的走,看的清楚,希望对你有帮助(求采纳)
解决方案二:
就是先执行外面的,每执行一次,就执行里面的for语句,直到里面的for语句执行完毕,再执行外面的for语句下一次
解决方案三:
你可以单步调试下,看得更清楚
这段代码会对于每个外侧的循环,都执行一次内侧的循环。
解决方案四:
好比让你不用计算机算1!+2!+3!+...+n!你怎么算?
对于每个项,你都要反复做乘法,做完乘法,还要把它们加起来。就是这样
解决方案五:
很正常,就是两重循环,这个代码是计算
1!+2!+3!+...+n!
解决方案六:
可以看看c语言的书,这种问题书上都有讲的
解决方案七:
两层循环,就像一个二维数组,或者理解为表格,从第一行开始,遍历,每一行又要遍历其中的每一列,遍历完这行的列,在到下一行,继续上面的过程