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

程序清单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结尾。这导致在每一个新行都打印更少的字符 。

 

转载于:https://my.oschina.net/idreamo/blog/685741

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值