多个循环嵌套的时候应该要怎么看啊?每次看到一堆循环嵌套时都犯晕!

时间:2022-05-27 05:50:00

#include <stdio.h> 
#include <string.h> 

int  main() 

char *a="abcde"; 
int L,i,j,k; 
L=strlen(a); 
for (i=1;i<=L;i++) 

for (j=0;j<=L-i;j++) 

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

printf("%c",a[k]); 

printf("\n"); 



return 0;
}


比如说这个循环,看了半天没明白,是应该从最内层的循环看是看?还是有什么方法没?虚心学习中!!

25 个解决方案

#1


#include <stdio.h> 
#include <string.h> 

int  main() 

    char *a="abcde"; 
    int L,i,j,k; 
    L=strlen(a); 
    for (i=1;i<=L;i++)  
        for (j=0;j<=L-i;j++) 
        { 
            for (k=j;k<j+i;k++) 
                printf("%c",a[k]); 
            printf("\n"); 
        }    
    return 0;
}

#2


跟最近的一对。

离开看大括号

#3


#include <stdio.h> 
#include <string.h> 
int  main() 

    char *a="abcde"; 
    int L,i,j,k; 
    L=strlen(a); 
    for (i=1;i<=L;i++) 
        for (j=0;j<=L-i;printf("\n"),j++) 
            for (k=j;k<j+i;printf("%c",a[k]),k++);   
    return 0;
}

这回就看明白了

#4


在每个循环的结尾都标注一下是哪个循环结束,然后多看看就行了~~~

#5


还是不知所以。。闷。。

#6


LZ你的代码是规范了的,不要被其他所误导

代码要看多,慢慢从简单地写起,多了就熟了

#7


单步调试就知道了 
由里到外

#8


这么说吧..在第一个for循环中..
for (i=1;i<=L;i++)//会把下面的两个for循环都执行完毕才会进行i++,然后再重新再执行下面的那两个for循环...
依次下去... 

#9


for (i=1;i<=L;i++) 
        for (j=0;j<=L-i;printf("\n"),j++) 
            for (k=j;k<j+i;printf("%c",a[k]),k++);   

这还不知道?

第2个循环我用逗号表达式把printf("\n")装进循环里。它就是这个循环的一部分。

第3个也相同。

但是3个循环体输出的我都用在循环体里了,所以在第3个循环后面加上;
表示在循环体里已经执行完毕。是空体了。

#10


每一个对应输出的都给你装进去了,还不明白?

#11


老铅你也太笨了,我好几天没来。两天就升到小星星了。

你看看你?

到现在还不是。我昨天一天就得了300多分

#12


Faint~~

我要工作的。再说分多分少那么重要吗,重要的是能帮助了别人,更快乐的是如果同时
自己也能增长见识。

你看看你,有多少问题,你的回答是准确的,特别是理论方面的,我看了你的一些回答,
真是触目惊心呀,哈哈。就拿这个问题来说,你这不是误导别人吗,人家写得比较规范的了,
你要做的是每一句每一句来解释,就行了。不要搞1、3L的代码。

不过,可以看出来,你回答问题很可爱的说 @_@ 。。。。

鼓励一下。。。

嘿嘿 。。。我要睡午觉了

我回答这个贴就是要你中计的,果然你中计了 。。。。哈哈   

#13


可能我的问法有问题,代码我能看懂的,但是那个判断条件是怎么出来的啊?最内层的循环条件又和上层的变量相关,条件看得真是乱七八糟的。。。

#14


对多重循环,由里往外看,走一遍,你会发现规律的。要熟练的话,还得多看、多写。

#15


LZ加油,代码百遍,其意自现

#16


引用 12 楼 traceless 的回复:
Faint~~

我要工作的。再说分多分少那么重要吗,重要的是能帮助了别人,更快乐的是如果同时
自己也能增长见识。

你看看你,有多少问题,你的回答是准确的,特别是理论方面的,我看了你的一些回答,
真是触目惊心呀,哈哈。就拿这个问题来说,你这不是误导别人吗,人家写得比较规范的了,
你要做的是每一句每一句来解释,就行了。不要搞1、3L的代码。

不过,可以看出来,你回答问题很可爱的说 @_@ 。。。。

鼓励一下。。。

嘿嘿 。。。我要睡午觉了

我回答这个贴就是要你中计的,果然你中计了 。。。。哈哈 


比不过,就说风凉话。你真行

#17


内层的循环变化快,

外层的变化慢,

这是最基本的。

记住。

#18


里边的for循环完了,外层的for才循环一次

#19


我是铅笔!

#20


引用 17 楼 z569362161 的回复:
内层的循环变化快,

外层的变化慢,

这是最基本的。

记住。

这个貌似跟循环快慢没关系吧。
这个是基本功,只能多看多理解一下。
先总体理解吧。

#21


层层嵌套就OK撒,,,,我汗     如果构成复合语句就必须加{}

#22


貌似有人说过自己一个月得了几千分

#23


lz是不懂那个业务逻辑关系吧。代码语法没问题是吧。

#24


先看i,j,k之间的关系。把它们的关系搞清楚了,它的意思也就明了了。

#25


请单步调试

#1


#include <stdio.h> 
#include <string.h> 

int  main() 

    char *a="abcde"; 
    int L,i,j,k; 
    L=strlen(a); 
    for (i=1;i<=L;i++)  
        for (j=0;j<=L-i;j++) 
        { 
            for (k=j;k<j+i;k++) 
                printf("%c",a[k]); 
            printf("\n"); 
        }    
    return 0;
}

#2


跟最近的一对。

离开看大括号

#3


#include <stdio.h> 
#include <string.h> 
int  main() 

    char *a="abcde"; 
    int L,i,j,k; 
    L=strlen(a); 
    for (i=1;i<=L;i++) 
        for (j=0;j<=L-i;printf("\n"),j++) 
            for (k=j;k<j+i;printf("%c",a[k]),k++);   
    return 0;
}

这回就看明白了

#4


在每个循环的结尾都标注一下是哪个循环结束,然后多看看就行了~~~

#5


还是不知所以。。闷。。

#6


LZ你的代码是规范了的,不要被其他所误导

代码要看多,慢慢从简单地写起,多了就熟了

#7


单步调试就知道了 
由里到外

#8


这么说吧..在第一个for循环中..
for (i=1;i<=L;i++)//会把下面的两个for循环都执行完毕才会进行i++,然后再重新再执行下面的那两个for循环...
依次下去... 

#9


for (i=1;i<=L;i++) 
        for (j=0;j<=L-i;printf("\n"),j++) 
            for (k=j;k<j+i;printf("%c",a[k]),k++);   

这还不知道?

第2个循环我用逗号表达式把printf("\n")装进循环里。它就是这个循环的一部分。

第3个也相同。

但是3个循环体输出的我都用在循环体里了,所以在第3个循环后面加上;
表示在循环体里已经执行完毕。是空体了。

#10


每一个对应输出的都给你装进去了,还不明白?

#11


老铅你也太笨了,我好几天没来。两天就升到小星星了。

你看看你?

到现在还不是。我昨天一天就得了300多分

#12


Faint~~

我要工作的。再说分多分少那么重要吗,重要的是能帮助了别人,更快乐的是如果同时
自己也能增长见识。

你看看你,有多少问题,你的回答是准确的,特别是理论方面的,我看了你的一些回答,
真是触目惊心呀,哈哈。就拿这个问题来说,你这不是误导别人吗,人家写得比较规范的了,
你要做的是每一句每一句来解释,就行了。不要搞1、3L的代码。

不过,可以看出来,你回答问题很可爱的说 @_@ 。。。。

鼓励一下。。。

嘿嘿 。。。我要睡午觉了

我回答这个贴就是要你中计的,果然你中计了 。。。。哈哈   

#13


可能我的问法有问题,代码我能看懂的,但是那个判断条件是怎么出来的啊?最内层的循环条件又和上层的变量相关,条件看得真是乱七八糟的。。。

#14


对多重循环,由里往外看,走一遍,你会发现规律的。要熟练的话,还得多看、多写。

#15


LZ加油,代码百遍,其意自现

#16


引用 12 楼 traceless 的回复:
Faint~~

我要工作的。再说分多分少那么重要吗,重要的是能帮助了别人,更快乐的是如果同时
自己也能增长见识。

你看看你,有多少问题,你的回答是准确的,特别是理论方面的,我看了你的一些回答,
真是触目惊心呀,哈哈。就拿这个问题来说,你这不是误导别人吗,人家写得比较规范的了,
你要做的是每一句每一句来解释,就行了。不要搞1、3L的代码。

不过,可以看出来,你回答问题很可爱的说 @_@ 。。。。

鼓励一下。。。

嘿嘿 。。。我要睡午觉了

我回答这个贴就是要你中计的,果然你中计了 。。。。哈哈 


比不过,就说风凉话。你真行

#17


内层的循环变化快,

外层的变化慢,

这是最基本的。

记住。

#18


里边的for循环完了,外层的for才循环一次

#19


我是铅笔!

#20


引用 17 楼 z569362161 的回复:
内层的循环变化快,

外层的变化慢,

这是最基本的。

记住。

这个貌似跟循环快慢没关系吧。
这个是基本功,只能多看多理解一下。
先总体理解吧。

#21


层层嵌套就OK撒,,,,我汗     如果构成复合语句就必须加{}

#22


貌似有人说过自己一个月得了几千分

#23


lz是不懂那个业务逻辑关系吧。代码语法没问题是吧。

#24


先看i,j,k之间的关系。把它们的关系搞清楚了,它的意思也就明了了。

#25


请单步调试