C语言基础知识之(七):循环嵌套的用途和规律

循环嵌套:

含义:一个循环体内完整的包含另一个循环

用途:

1、打印行列数字

例:打印四行四列的数字

1 2 3 4

1 2 3 4

1 2 3 4

1 2 3 4

分析:

a、需要使用两个循环。一个循环控制行,一个循环控制列。

b、外层循环控制行,内层循环控制列

for (int i = 1; i <= 4; i++) {

   for (int j = 1; j <= 4;j++) {     

      printf("%d ",j);

  }

printf(" \n");

}

例:打印如下数字

1

1 2

1 2 3

1 2 3 4

1 2 3 4 5

分析:每一行打印的数字和所在的行数对应。第二层的循环条件即为 j<=i;

for (int i = 1; i <= 5; i++) {

   for (int j = 1; j <= i;j++) {

       printf("%d ",j);

   }

  printf("\n");

}

2、处理多位数

例:打印三个数字(0~9)的可能组合

分析:使用三层循环i,j,k分表表示百十个位上得数,其中百位数不能为0.

for (int i = 1; i <= 9; i++) {

    for (int j = 0; j <= 9;j++) {

        for (int k = 0; k<= 9; k++) {

            printf("%d", i*100 + j*10 + k);

        }

    }

}

3、二维及多维数组

数组和循环是配套使用的,有数组必定要使用循环。

数组使用循环进行赋值或遍历,数组有几维就要使用基层循环。

对于二维数字来说:i代表行数,j代表列数。

对于三维数组需要增加层数,即多一层循环,代表层数。

例:遍历如下数组并打印所有字符

char names[3][30] = {"zhangsan","lisi", "wangwu"};

for (int i =0; i < 3; i++) {

   for (int j = 0; j < 30; j++) {

       printf("%c ", names[i][j]);

    }

   printf("\n");

}

例:

对如下字符串数组从小到大排序

char names[5][20] = {"zhangsan", "lisi","wangwu", "zhaoliu", "qianliu"};

for (int i = 0; i < 4; i++) {

    for (int j = 0; j <4-i; j++) {

        char temp[20] = {0};

        if (strcmp(names[j],names[j+1]) ) > 0) {

            strcpy(temp,names[j]);

            strcpy(names[j],names[j+1]);

            strcpy(names[j+1],temp);

        }

    }

}

for (int i =0; i < 5; i++) {

    printf("%s\n",names[i]);

}

规律:

根据要实现的功能,内层循环的循环条件要进行相应的改变。

1、

内层循环的输出为每行的列数,即每行数字的表现形式。如:第一行打印一个数字,第二行打印2个数字,以此类推,此时内层循环的循环条件应为:j <= i ,  i

是从1开始。

外层循环负责输出的行数,在外层循环内打印换行。

2、

循环可以处理多位数字,如个位,十位,百位等。循环层数根据数字的位数确定。其中最内层循环表示个位,由最内层往外依次表示为个位,十位,百位等。

3、

多维数组有几维,就有几层循环。

如三维数组,需要用到三层循环。循环由外往内依次表示层数,行数,列数。


你可能感兴趣的:(C语言)