黑马程序员——C语言流程控制

来源:互联网 发布:最全p2p网络投资 编辑:程序博客网 时间:2024/05/16 17:45

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------



一、流程控制

     1.  顺序结构:默认的流程结构,按照书写顺序执行每一条语句。

     2.  选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码。

     3.  循环结构:在给定条件成立的情况下,反复执行某一段代码。

            

二、选择结构 (if 和switch)

     1. if 语句的4种结构和使用

           第一种:if (条件)

                              { 语句1}             //  如果满足条件,就执行语句1

           第二种:if (条件)  

                               { 语句1};       //如果满足条件就执行语句1

                          else

                                {语句2};       //  如果不满足条件,就执行语句2

           第三种: 哪一段成立就执行哪一段

                            if (条件1)

                                  {语句1}          //  如果满足条件1,就执行语句1

                          elseif (条件2)

                                  {语句2}          //  如果满足条件2,就执行语句2

                          elseif (条件3)

                                   {语句3}          //  如果满足条件3,就执行语句3

                           else

                                   {语句4};     //  如果条件都不满足,就执行语句4

          第四种:   if (条件)

                                    {语句1}          //  如果满足条件,就执行语句1,不满足就不执行语句1

                                    {语句2}          //  语句2与条件无关,不管条件是否满足,都会执行

*if 使用注意点:

  (1) 判断值是否相等的时候,最好把常量写在==左边,例如(0==a)

             因为如果因为粗心将a==0写成了a=0,编译器是不会报错的,但如果把常量写在==左边,0=a,编译器会马上报错,所以把                常量写==左边会及时纠正我们的错误

  (2) if(条件)后面没有分号(;)

  (3) 错误写法:   (原因在于找不到a)

           int   main()

             {

                   if (10  >6)

                     {

                           int  a =5                          //这一行过后,代码块执行结束 a被回收

                      }     

                       printf("%d\n",a);

                  return 0;

             }                             

  (4) 错误写法:   (原因在于作用域不明确)

         int    main()

          {

                if (10  >6)

                  int  a =5                          //看起来这一行代码应该属于main()但实际这行只跟if有关,所以作用域不明确会报错

                    printf("%d\n",a);

                    return 0;

           }                             

        结论:如果要在if 后面的语句中定义一个新的变量,必须使用{}

2. switch 语句的结构和使用

 (1)switch的结构

        switch(数值

          { 

             case 数值1:                 //如果数值==数值1,执行语句1,直到遇到break为止

                语句1

               break;  

                case 数值2:              //如果数值==数值2,执行语句2,直到遇到break为止

                 语句2

                 break;  

                     … 

                default:                     //如果数值!=数值1,而且数值!=数值2执行语句3,直到遇到break为止

               语句3

                break;

            }

(2)break的作用:退出整个switch语句

(3)如果case后面没有break,就会执行后面所有的case语句,直到遇到break为止

*switch使用注意点:

     如果要在case后面定义一个新的变量,必须使用{}包住

3. if 和 switch的比较

(1)if 更加灵活,switch 能办到的,if都能办到,但if能完成的,switch 不一定能完成

(2)有些情况下,if 和switch 可以互用

(3)判断大小的时候一般选用if

三,循环结构 (while,do while,for)

   1. while循环的结构和使用

        while(条件) 

        {                                        

         }

     (1) 先确定需要重复执行的操作放到循环体{}中,然后再确定约束条件

     (2) 若条件成立,执行一次循环体{},然后再判断条件,若成立继续执行循环体{},直到条件不成立,退出整个循环

  (3)若一开始,条件就不成立,则永远不会执行循环体{}

  (4)若while后面没有{},意味着while后面的那一句代码就是循环体

     (5)  while 循环中用到的变量必须在循环外面定义

2. do while循环的结构和使用

       do  {                                        

              }while(条件)

   不管条件是否成立,先执行一次循环环体{},再判断条件是否成立,若条件成立,继续执行,不成立,则退出循环

3. for循环的结构和使用

   for(语句1;条件;语句2)

     {

      }

  (1)语句1:初始化语句;语句2:增量语句(执行完循环体再执行的语句)

  (2)for循环一开始,先执行一次语句1,然后判断条件是否成立,若成立,执行一次循环体{},接着执行语句2,然后再次判断条件是否成立................

  (3)for循环中用到的变量可以在循环中定义        

*for循环使用注意

  (1)for()后面没有分号(;)

  (2)要注意for循环内部变量的作用域

  (3)循环体执行完,循环体内部的变量就意味着被回收

  (4)for循环可以嵌套使用

4. while,do while,和for循环的比较

    一般优先考虑使用for循环(for循环比较灵活,变量可以及时回收),再考虑while循环,最后考虑do while循环

5. break 和continue的比较

(1)break使用场合

           1> switch 语句中:退出整个switch语句

           2>循环结构中(while,do while,for):退出整个循环语句(注意:只对最近的循环体有效)

(1)continue使用场合

            循环结构中(while,do while,for):结束当前的这次循环体,进入下一次循环体(注意:只对最近的循环体有效)





0 0