C语言基础--for循环

for循环格式:

 for (初始化表达式;条件表达式;循环后增量表达式)
 {
    语句;
    ...
 }

   条件表达式: 和while, dowhile一样, 只有条件满足才会执行循环体

   初始化表达式: 在整个for循环的生命周期中, 初始化表达式只会执行一次

   循环后增量表达式: 会在每次循环体之后完毕之后调用一次

for循环执行说明:

  for循环开始时,会先执行初始化表达式,而且在整个循环过程中只执行一次初始化表达式

  接着判断循环条件表达式,如果条件成立,就会执行循环体中的语句(“循环体”就是for后面大括号{}中的内容)

  循环体执行完毕后,接下来会执行循环后的操作表达式,然后再次判断条件,重复上述过程,直到条件不成立就结束for循环

for循环应用:

     能用while做得用for都能做, for相当于while的升级版

     以后如果定义的便利仅仅用于控制循环什么时候结束, 循环结束之后就不在使用了, 那么可以使用for循环

     如果将用于控制循环的变量定义在for循环中, 那么循环结束了, 变量也释放了

for循环注意点: 

    // 1.任何数值都有真假新
    for (; 1; ) {
        printf("lnj");
    } 
    // 2.for也可以省略大括号, for省略大括号的时候, 只会执行离他最近的一条语句
    for (;0;)
        printf("lnj");
    printf("other"); 
    // 3.作用域混乱
    for (;1;)
        int a = 10;
    printf("a = %i
", a); 
     // 5.;空语句
    for (;0;);
    {
        printf("lnj");
    } 
    // 6.其实, 初始化表达式和循环后增量表达式可以写多条语句, 语句之间用,号连接
    for (int i = 0, j = 0; i < 2; i++, j++)
    {
        printf("i = %i j = %i
", i, j);
    } 
    // 最简单的死循环
    for(;1;);
    for(;;); // 注意: for循环中的条件表达式默认为真

for循环嵌套:  

    // 问题: 会打印几次
     // 结论: 循环嵌套执行的次数等于 : 外循环执行的次数 * 内循环执行的次数
     for (int i = 0; i < 2; i++) {
         for (int j = 0; j < 3; j++) {
             printf("i = %i , j = %i
", i, j);
         }
     }

使用举例:

    /* 1.
     好友列表1
         好友1
         好友2
     好友列表2
         好友1
         好友2
     好友列表3
         好友1
         好友2
     */
    for (int i = 0; i < 3; i++) {
        printf("好友列表%i
", i + 1 );
        for (int j = 0; j < 2; j++) {
            printf("    好友%i
", j + 1);
        }
    } 
    /* 2.
        打印:
            ***
            ***
            ***
         打印3行
         每行3列
     */
    // 外循环控制行数
    // 内循环控制列数
    for (int j = 0 ; j < 3; j++) {
        for (int i = 0; i < 3; i++) {
            printf("*");
        }
        printf("
");
    } 
    /* 3.
     ***
     **
     *
    打印3行 
    每行最多3列(第一行3列)
     */
    // 只要以后看到很多行很多列, 那么第一时间就要想到循环嵌套
    for (int i = 0; i < 3; i++) {
        for (int j = i; j < 3; j++) {
            printf("*");
        }
        printf("
");
    } 
    /* 4.
         *
         **
         ***
     */
   for (int i = 0; i < 3; i++) {
        for (int j = 0; j <= i; j++) {
            printf("*");
        }
        printf("
");
    } 
   /* 5.
     --*
     -***
     *****
   */
   for (int i = 0; i < 3; i++) {
        for (int j = i; j < 2; j++) {
            printf("-");
        }
        for (int n = 0; n <= i * 2; n++) {
            printf("*");
        }
        printf("
");
    }      

规律:

  尖尖朝上: 修改内循环的 条件表达式

  尖尖朝下: 修改内循环的 初始化表达式

  (但是也不一定非要这样)

使用举例:

/*
打印乘法表:
1 * 1 = 1
1 * 2 = 2     2 * 2 = 4
1 * 3 = 3     2 * 3 = 6     3 * 3 = 9
观察发现有很多行很多列--》循环嵌套
尖尖朝上,让内循环条件表达式随着外循环i改变
输出的结果等于 内循环的变量 * 外循环的变量
*/
for (int i = 1; i <= 9; i++) {
        for (int j = 1; j <= i; j++) {
            printf("%d * %d = %d 	", j, i, (j * i));
        }
        printf("
");
}
原文地址:https://www.cnblogs.com/dx-230/p/4755924.html