一生为你画眉 发表于 2014-3-3 20:42:07

初学者请大神指教这个问题!


请大神指点这个问题,看我自己理解的对不对!
程序执行第一层,分别为k=0,k=1时符合条件,程序显示为前两行,
然后程序执行第二层,j=0,j=1时执行,在执行程序的时候第一层程序也跟着重复执行k=0,k=1;
然后第三层的时候也是这样子!
但是程序执行嵌套最里层的时候,以外的嵌套不执行,但是执行第二层的 时候,第二层以内的还要执行,以上的不执行!
我表达的有点不清楚,希望大神指点这个程序的执行是不是这个方式!还望给与清晰的指点!小弟在此谢过了!

zhaopengfei 发表于 2014-3-3 21:01:18

你这问的模模糊糊的,程序写的极不规范,让人无语凝噎。

sidfate 发表于 2014-3-3 21:10:19

你可以这么想,第一层k完成循环后第二层循环j+1,第二层完成循环后第三层i+1,我们只看第三层,总共i是改变2次吧,i改变2次第二层循环2次也就是j改变2*2=4次,j改变4次也就是k改变4*2=8次。

假设有N个循环,每个循环执行N次,则总的执行次数就是N的N次方

清明 发表于 2014-3-3 22:01:01

我觉得这样比较清晰点

for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
for (k = 0; k < 2; k++)

printf ("%d %d %d \n", i, j, k);

   i = 0 i < 2 成立
   j = 0 j < 2 成立
   k = 0 k < 2 成立
   输出 i j k = 0 0 0
   转到k++
   k = 1, k < 2 成立
   输出 i j k = 0 0 1
   转到k++
   k = 2 k < 2 不成立
   转到j++
   j = 1 j < 2 成立
   k = 0 k < 2 成立
   输出 i j k 0 1 0
   转到k++
   k = 1 k < 2 成立
   ...........

一生为你画眉 发表于 2014-3-4 20:06:50

清明 发表于 2014-3-3 22:01 static/image/common/back.gif
我觉得这样比较清晰点

for (i = 0; i < 2; i++)


如醍醐灌顶,明白了!谢谢!

一生为你画眉 发表于 2014-3-4 20:07:28

sidfate 发表于 2014-3-3 21:10 static/image/common/back.gif
你可以这么想,第一层k完成循环后第二层循环j+1,第二层完成循环后第三层i+1,我们只看第三层,总共i是改变 ...

嗯,这种思路很简便,谢谢了哈!

Diu 发表于 2014-3-4 22:19:23

林锐的《高质量c语言编程》   关于代码格式规范,lz可以看看

一生为你画眉 发表于 2014-3-5 20:27:11

Diu 发表于 2014-3-4 22:19 static/image/common/back.gif
林锐的《高质量c语言编程》   关于代码格式规范,lz可以看看

好的,谢谢推荐!
页: [1]
查看完整版本: 初学者请大神指教这个问题!