第一节: 流程控制的分类

流程控制的定义 流程控制就是代码执行的顺序,在代码的执行过程中,我们可能出现各种情况,对应不同情况,我们的代码会执行不同的分支结构,这个时候就是采用流程控制语句来控制代码的执行顺序。

流程控制简单的分为以下三类:

顺序结构 就是按照顺序依次往下执行,这里不做任何赘述。

选择结构 是出现分支选择的执行结构,例如,这个周末是取爬山还是去学习,就会出现分支

循环结构 是当我们要解决多个执行逻辑代码的时候,如果一行一行的重复输入这些代码,将会极大的降低我们的工作效率,因此出现了循环结构,会重复的执行一些需要执行的逻辑代码

第二节:选择结构

(1)分类

  • C语言中的选择结构有 if语句 switch语句 ,两种选择结构语句。
  • (2)if三种语句使用

    # include<stdio.h>
    int main(void)
      int i = 1;
      if(i == 1){
        printf("今天去爬山");
      if(i == 2){
        printf("今天去学习");
      return 0;  
    
  • if...else...语句
    # include<stdio.h>
    int main(void)
      int i = 1;
      if(i == 1){
        printf("今天去爬山");
      }else{
        printf("今天去学习");
      return 0;  
    
  • if...else if...else if...else语句
    # include<stdio.h>
    int main(void)
        int i = 1;
        if(i == 1){
            printf("今天去爬山");
        }else if(i == 2){
            printf("今天去学习");
        }else if(i == 3){
            printf("今天去玩游戏");
        }else{
            printf("今天睡觉,哪里都不去");
        return 0;  
    

       注意:if语句在做条件判断的时候,如果是常量判断,通常把常量放在左边,变量放在右边以避免错误,例如:if(0 == a)避免写成if(0 = a),而且写成这样也不会报错

    (3)switch语句

         switch语句这里简单的举一个电梯的例子。

  • 电梯的例子
    # include<stdio.h>
    int main(void)
        int floor;
        printf("请输入要上的电梯层数:\n");
        scanf("%d",&floor);
        switch(floor){
            case 1:
                printf("1楼到了...\n");
                break;
            case 2:
                printf("2楼到了...\n");
                break;
            default:    
                printf("该楼层正在建设中...\n");
                break;
    

       switch语句和if语句的区别:

  • if语句能够实现的switch语句不一定能够实现,例如:if(a>100)
  • if语句有时候是能够互换的
  • switch语句可以完成的功能,if语句都可以完成
  • switch语句的case里面的break如果省略了,则不会跳出switch语句,而是继续往下执行,直到没有符合条件的才会跳出。
  • 例如:我们可以用来判断月份是那个季节,就可以使用省略break的贯穿方式来灵活的编写代码。
  • 第三节:循环结构

    // 例如1:多个变量初始化和步长递增 for(int i = 0,int j=0; i<10; i++,j++ ){ printf("i = %d , j = %d", i , j); // 例如2:求1+1/2+1/3...1/100的和 float sum = 0; for(int i = 0;i < 101; i++){   sum += 1.0/i;

    for循环的执行过程:

  • 执行初始化语句
  • 执行判断语句
    1. 如果判断结果为true,则进入循环。
    2. 执行完业务代码
    3. 执行步长语句
    4. 执行判断语句(返回到上面的第二步)
    5. 如果判断结果为false,则结束循环
    6. 多个for循环嵌套:

      // 输出九九乘法表
      # include<stdio.h>
      int main(void)
          for(int i = 1; i <= 9; i++){
              for(int j = 1; j<= i; j++){
                  printf("%d * %d = %d ",j , i , j*i);
              printf("\n");
          return 0;
      

      for循环注意事项:

    7. for循环的死循环:for( ; ; );
    8. for循环注意其执行流程
    9. (3)while循环

      // while循环基本格式
      初始化语句;
      while(判断语句){
         业务语句;
         步长语句;
      // 例如:计算1+2+3+...+n的值
      int sum = 0;
      int i = 1;
      while( i <101 ){
          sum += i;
          i++;
      

      while循环执行过程

    10. 执行初始化语句执行判断语句
    11. 如果判断语句结果为true,则进入循环
      1. 执行业务语句
      2. 执行步长语句
      3. 执行判断语句(返回上述第二步)
      4. 如果判断语句结果为false,则跳出循环
      5. while循环的注意事项

      6. while循环的死循环:while(1)
      7. for循环和while是完全等价的,但是for循环逻辑更强,推荐使用for
      8. (4)do...while循环

        // 基本格式
        初始化语句;
            业务逻辑代码;
            步长代码;
        }while(判断语句);
      9. do...while语句至少执行一次***
      10. do...while语句和while,for语句不等价
      11. 第四节:break和continue的用法

        (1)break用法

      12. break可以用于for循环,while循环,do...while循环和switch语句。用于终止当前循环或者跳出switch语句
      13. break可以用于if语句,但是该if语句必须包含在循环语句中或者switch语句中,前者作为循环内部的一个子句。当符合if条件的时候终止循环语句,后者作为switch语句中的case情况,当满足if条件的时候,提前跳出switch语句(自己可以测试)
      14. break语句在多层循环中,只能跳出离break最近的循环体
      15. break只可以用于以上使用情况,break的作用就是强制跳出循环结构,终止本次循环或者跳出switch语句
      16. (2)continue用法

      17. continue用于循环结构,例如:for,while,do...while语句
      18. continue用于结束本次单次循环(continue后面的语句不再执行,跳出本次循环),强制程序进入下一轮循环
  •