C Primer Plus 第6章 C控制语句:循环 6.10 嵌套循环

原创
2016/06/02 05:49
阅读数 194

程序清单6.17  rows1.c

/*roww1.c --使用嵌套循环*/
#include 
#define ROWS 6
#define CHARS 10
int main (void)
{
    int row;
    char ch;
    
    for(row=0;row<ROWS,row++)  /*第10行*/
    {
        for(ch='A';ch<('A'+CHARS);ch++)  /*第12行*/
            printf("%c",ch);
      printf("\n");
    }
    return 0;
}

/*运行这个程序会产生下列输出
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
ABCDEFGHIJ
*/

6.10.1 程序讨论

 开始于第10行的循环被称为外部循环,而开始于第12行的循环称为内部循环,因为它位于另一个循环的内部。外部循环开始时,ROW的值为0,当ROW的值达到6时结束。因此外部循环要执行6次,ROw的值从0变到5.每次循环的第一个语句都是内部的for循环。这个循环执行10次,在同一行上打印从A到J的字符。外部循环的第二个语句是printf("\n");。这个语句开始一个新行,这们内部循环下次运行的时候,输出就会在一个新的行上。

请注意在嵌套循环中,内部循环在外部循环的每次单独循环中都完全执行它的所有循环。

6.10.2 嵌套变化

在上一个例子中,内部循环在外部循环的每个周期中做着同样的事情。通过使内部循环的一部分依赖于外部循环,可以使内部循环在每个周期中的表现不同。

程序清单 6.18 rows2.c

//rows2.c--使内部循环依赖于外部循环的嵌套循环
#include <stdio.h>
int main (void)
{
    const int ROWS=6;
    const int CHARS=6;
    int row;
    char ch;
    
    for(row=0;row<ROWS;row++)
    {
        for(ch=('A'+row);ch<('A'+CHARS);ch++)
            printf("%c",ch);
        printf("\n");
    }
    return 0;
}
/*这次的输出如下:
ABCDEF
BCDEF
CDEF
DEF
EF
F
*/

因为在外部循环的每个周期中都要把row的值加到‘A’上,所以ch在每一行中都被初始化为字母表中后面的字符。但是判断条件并没有发生变化,所以每一行都依然是以F结尾。这导致在每一个新行都打印更少的字符 。

 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部