首页 > 代码库 > 【黑马程序员】————流程控制

【黑马程序员】————流程控制

  

 

一、  流程控制

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

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

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

     

二、      选择结构-if

  简单使用

 

 1.if的第1种结构

1  if(条件)2  {3     语句1;4     语句2;5     ......6  }

 
 2.if的第2种结构
 

 1 if(条件1) 2  { 3      语句1; 4      语句2; 5      ...... 6  }  7  else 8  { 9     10  }11  

 

3.if的第3种结构
 

 1 if(条件1) 2  { 3      语句1; 4      语句2; 5      ...... 6  } 7  else if(条件2) 8  { 9  10  }11  else if(条件3)12  {13  14  }15  else if(条件4)16  {17  18  }19  else 20  {21  22  }


 4.if的第4种结构

 

1 if (条件)2    语句1;

 

 注意:1>比较大小时,常量值放左边,变量放右边

          2>注意赋值运算符,不要写成两个=

          3>if语句后面不要写;

          4>下面的代码是错误的:作用域不明确
                if (10 > 6)
                int a = 5;
               // 如果要在if后面的语句中定义新的变量,必须用大括号{}
               //printf("%d\n", a);

 

合条件

上课时间的取值范围(9~12 ||  14 ~17)

 

陷阱

if(a!=0)  { a不是0;} else {a是0;}

if (a); {  }

if (a=0) 

a == 0;

if (10) int a = 9;

 

三、      选择结构-switch

1.    简单使用

switch(表达式) { case 数值1: break; … default: break;}

举例

 

 1 int a = 10; 2  3  switch (a) { 4  5      case 0: 6  7          printf("这是一个0"); 8  9          break;10 11      case 5:12 13          printf("这是一个5");14 15          break;16 17      case 10:18 19          printf("这是一个10");20 21          break;22 23      default:24 25          printf("什么也不是");26 27          break;

 

注意:1>break:退出整个switch语句

         2>如果case后面没有break,就会执行后面所有case中的语句,直到遇到break为止

         3>如果要在case后面定义新的变量,必须用大括号{}包住

 

2.      if和switch的对比

  1> if语句能完成的功能,switch并不一定能完成

  2> 在有些情况下,if语句和switch语句可以互换

  3> switch能完成的功能,if语句都能完成

 

四、      循环结构-while

1.          简单使用

  

  
 while (条件)
 {
    循环体
 }

  1>确定需要重复执行的操作
  2>确定约束条件

  

 

  continue:输出5次休息一下

  break的使用:某次的时候停止循环

2.          特点

  1>如果一开始条件就不成立,永远不会执行循环体  

  2>如果条件成立,就会执行一次循环体,执行完毕,再次判断条件是否成立.....

   

  break
  直接结束整个while循环
 
   continue
   结束当前的循环体,进入下一次循环体的执行

3.          习题

  1>     提示用户输入一个正整数n,计算1+2+3+…+n的和

  2>     提示用户输入一个正整数n,计算1-2+3-4+5-6+…+n的和

4.          陷阱

while(条件);

while(1);   // 最简单的死循环

 

五、      循环结构-do while

特点:一定会执行一次循环体

while和do while循环对比

  1>很多情况下,while和do while可以互换

  2>while特点:如果一开始的条件不成立,永远不会执行循环体
    do while特点:不管一开始的条件是否成立,至少会执行一次循环体

  3>最好使用while

1 int i=0;2 while(i<0){3  i++;4 }5 6 int i=0;7 do{8  i++;9 } while(i<0);

 

六、      循环结构-for

1.      简单实用

  for (语句1; 条件; 语句2)
 {
    循环体
 }

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

  1>for一开始就会执行一次语句1(整个for循环只会执行一次)

  2>判断条件是否成立,如果条件成立,就会执行一次循环体,然后就会执行语句2,再次判断条件是否成立

2.      for循环嵌套

好友列表1

         好友1

         好友2

好友列表2

         好友1

         好友2

好友列表3

         好友1

         好友2

 

3.      陷阱

  1>     死循环 for(;;);

  2>     for循环体内部变量的作用域

  3>     作用域混淆

  for (int i = 0; i<5; i++)  int a = 10;

  4>   不要随便在for()后面写分号

  5>  如果要在循环体中定义新的变量,必须用大括号{}包住

 

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

  可以互换

  for循环的变量可以及时回收

1.      习题

  1>     提示用户输入一个正整数n,如果n5,就输出下列图形,其他n值以此类推

  

 1 #include <stdio.h> 2  3 int main() 4 { 5     // 1.定义一个变量存储用户输入的值 6     int n = 0; // 一定要初始化 7      8     // 2.判断n值合不合理 9     while (n <= 0)10     {11         // 2.1 提示用户输入正整数12         printf("请输入一个正整数:\n");13         14         // 2.2 接收输入的数据15         scanf("%d", &n);16     }17     18     // 3.输出图形19     for (int i = 0; i<n; i++)// 有多少行20     {21         22         for (int j = 0; j<n-i; j++)23         { // 每一行有多少个24             printf("*");25         }26         27         printf("\n");28     }29     30     return 0;31 }

 

 

  2>     输出九九乘法表

  

 

七、      break和continue

1.      break

  

  1.使用场合
   1> switch语句:退出整个switch语句
   2> 循环结构:退出整个循环语句
     * while
     * do while
     * for
  2.注意点
   只对最近的循环结构有效

 

2.      continue

  1.使用场合

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