zoukankan      html  css  js  c++  java
  • 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("
    ");
    }
  • 相关阅读:
    springboot+maven+thymeleaf配置实战demo
    报错AbstractStandardExpressionAttributeTagProcessor
    IllegalStateException: Unable to find a @SpringBootConfiguration
    Java装饰模式
    Java容器类解析
    jdk之object源码理解
    osx brew mysql
    java String[] 初始化
    date 常用
    mac mysql
  • 原文地址:https://www.cnblogs.com/dx-230/p/4755924.html
Copyright © 2011-2022 走看看