第五章 循环结构

    循环结构也称重复结构, 是指在程序执行过程中需要反复执行的程序段。

    循环语句有三种:

      while语句

      for语句 无条件循环

      do—while语句 

    C语言中   三种循环结构 本质上都可以相互转换。只有合适的场景下用合适的循

一.while 循环

  while语句用来实现“当型”循环结构

  格 式:

       第五章  循环结构

      While(循环结束条件)

      {

        多条语句;

        更改循环变量

      }

  特点: 先判断, 再执行, 有可能一次也不执行。

  说明:

    1. 表达式必须用一对圆括号括起来, 如果循环体包含一条以上的语句应用花括号括起来。   

    2. 在循环体内必须修改循环变量的值, 否则死循环。

    3. 在循环体中, 循环变量的值可以被引用、修改,但不能另赋新值。

    4.若表达式只用来表示等于零或不等于零的关系时, 条件表达 式可以简化成如下形式:

       while (x!=0) 可写成 while (x)

      while (x==0) 可写成 while (!x)

    5. 循环体通常是一个复合语句, 但也可以是一个空 语句或单个语句。

      如: 空语句: while (x++<10000) ; //分号不能省

        单语句: x=10 ; while(x-->0)printf(“%d”, x);

二 for循环

  格式: 

                     第五章  循环结构

      for(循环变量赋初值;循环结束条件;更改循环变量)

      {

        语句块;

      }

      (1) 省略表达式1, 此时应在for语句之前给循环变量赋初值, 并且分号不能省略。

        如: i=1 ;

             for ( ; i<=100 ; i++)

      (2)省略表达式2, 则认为循环条件始终为真, 程序将陷入死循环。

        如: for( i=1 ; ; i++ ) 

         {

          sum+=i ; if (i>=100) break;

        }

      (3)表达式3可省略, 此时应在循环体内对循环变量进行修改, 以保证循环能正常结束。

         如, 求和运算: for ( i=1 ; i<=100; ) //分号不能省略

                sum+=i++ ; //修改循环变量

  

      (4)三个表达式都省略, 此时应在循环体内对循环变量进行修改, 用break语句终止循环。

           如, 求和运算: i=1 ;

                 for ( ; ; )

                { sum+=i++ ;

                 if ( i >100 ) break ;      }

       (5)表达式1、3都可以有一项或多项, 若有多项则使用逗号表达式。

          如, 求和运算: for ( s=0, i=1 ; i<=100; i++) s+=i ;

                 for (s=0, i=1; i<=100; s+=i, i++) ;

        本质执行顺序是相同的,while循环一般用于不知道循环次数的时候,

        如果使用for循环 也可以做,但是 for( ; ; )会造成for循环头中有一个部分缺省

求一个输入数字的每一个组成数组   for(输入的无需再次赋值;结束条件;)

如果for循环头三个表达式都为空    while(1) 是一样的

  特点:先判断,  再执行,  有可能一次也不执行。

do-while循环

    do-while语句用来实现“直到型”循环结构

  格式: do 循环体语句 while(<表达式>) ;

                     第五章  循环结构

循环的嵌套

    在一个循环体内又包含有一个或多个完整的循环结构,  称为循环的嵌套。内嵌的循环中还可以嵌套循环即为多重循环。

  说明  1) 嵌套要完整,不能交叉

       2)并列的循环变量可以同名,  但嵌套的循环变量不允许同名

      3)可以用break语句从内循环跳转到外循环, 但不允许从循环体外跳转到循环体内。

  一般的我们称一层循环的复杂度为n那么双层循环时间复杂度为n^2

break语句

  格式: break ;

  作用: 提前退出某个循环或跳出switch结构。 退出当前switch语句 退出当前循环(在循环体中break语句与if语句搭配使用)

continue语句

  格式: continue ;

  作用: 结束本次循环, 不在执行continue语句之后的循环体 语句, 使程序回到循环条件, 接着进行下一次是否执行 循环的判定。

  说明: 只能用于循环结构中, 常与if语句联合起来使用, 以便 在满足条件时提前结束本次循环。

  注意: 在while和do-while结构中, 在continue语句被执行 之后立即进行循环条件的测试;

     在for结构中, 表达式 3被执行之后,然后进行循环条件的测试。

break 与 continue 的区别

                                     第五章  循环结构

  循环必须注意:
    1,while循环容易编写出错。两个while循环并列的时候,因为第一个while循环,已经把循环变量给改了,当运行第二个循环的时候,别忘记初始化。
    2,for循环因为第一个表达式就是循环变量初始化的位置,所以程序员不会忘记写,出错几率小一些。同时,我们要记住for循环的执行次序。
    3,三条循环语句可以互相替代使用,但是还是有一些方便性的差别。for循环常用于有明确的开始值和结束值和循环变量的步长。

      while 循环常用于不容易知道开始值和结束值和步长的情况,循环次数是根据中间运算结果决定的。这种情况,有可能一次都不执行,这样的情况。
``      do while 循环常用于不容易知道开始值和结束值和步长的情况,循环次数是根据中间运算结果决定的而且,至少需要先执行一次,这样的情况。
    4,while 和 for 是先判断然后执行的,我们叫他当型循环。do while 是先执行然后判断的,我们叫他直到型循环。