美文网首页
01-C语言流程控制-if和switch条件语句

01-C语言流程控制-if和switch条件语句

作者: 低头看云 | 来源:发表于2018-08-29 23:10 被阅读0次

    流程控制

    流程控制三种结构: 顺序结构, 选择结构, 循环结构

    选择结构

    • C语言中提供了两大选择结构,分别是if 和switch;

    1. if条件语句

    • if 的第一种表达式
      • 如果表达式为真,执行语句块1,否者不执行;
        if(条件表达式){  
        
            条件成立执行的语句;  
    
        }
    
    if(age >= 18){
        printf("上网去\n");
    }
    printf("买饮料\n");
    
    • if的第二种表达式
      • 如果表达式为真,执行语句块1,否者执行语句块2;
      • else 不能脱离if单独使用;
    if(条件表达式){
        条件成立执行的语句;
    }else{
        条件不成立执行的语句;
    }
    
    
    if(num % 2 == 0){
        printf("num is 偶数");
    }else{
        printf("num is 奇数");
    }
    
    • if的第三种表达式
      • 从上到下依次判断条件跳大神,哪个表达式成立,就会执行那个条件表达式后面{}的内容;
      • 如果所有条件表达式都不成立,就执行else后面括号中的内容;
    if(表达式1){
        条件满足执行语句块1;
    }else if(表达式2){
        条件满足执行语句块2;
    }else if(表达式3){
        条件满足执行语句块3;
    }else{
        条件不成立执行的语句;
    }
    
    
    if(age > 18){
        printf("上大学");
    }else if (age > 15){
        printf("上高中");
    }else if(age > 12){
        printf("上初中");
    }else if(age > 7){
        printf("上小学")
    }else{
        printf("上幼儿园");
    }
    
    
    
    • if嵌套
      • if中可以继续嵌套if, else中也可以继续嵌套;
    if(表达式1){
        语句块1;
        if(表达式2){
          语句块2;
        }
    }else{
        if(表达式3){
          语句块3;
        }else{
          语句块4;
        }
    }
    
    • if注意点

      • if语句不用写分号;
      #include <stdio.h>
      
      int main()
      {
          int num = 10;
          // (;)也是一条语句, 称之为空语句
          if(num >18);   // 写了这个分号;{}中的内容就脱离if的控制
          {
              printf("该去上大学了");
          }
          return 0;
          
          // 条件不满足还是会执行{}中的内容;
          // 输出该去上学了
      }
      
      • 当if else后面只有一条语句时, if else后面的大括号可以省略,如果省略大括号,那么仅仅距离if最近的那个条语句受到if的控制
      • 当if else后面的大括号被省略时,** else会自动和距离最近的一个if匹配**
      • 如果if 省略了大括号, 那么后面不能定义变量
      #include <stdio.h>
      
      int main()
      {
          if(1)
              int num = 10;  // 系统会报错
          printf("num = %i", num);
          return 0;
      }
      
      #include <stdio.h>
      
      int main(){
          if(0){
              int num1 = 10;
      
          }else
              int num2 = 20;  // 系统报错
          printf("num2 = %i", num2);
          return 0;
      }
      
      
      • C语言中分号(;)也是一条语句, 称之为空语句
      • 但凡遇到比较一个变量等于或者不等于某一个常量的时候,把常量写在前面
      • 任何数值都有真假性;在企业开发中如果要判断是否相等,建议把常量写在前面,把变量写在后面
      • {}可以单独出现,{}出现的时候是一个代码块; 主要用于隔离变量使用;代码块外面是不能访问代码块内的变量;代码块里面可以访问代码块外面的变量;
      {
          int age = 18;
          printf("age = %i\n", age);
      }
      printf("age = %i\n",age);  //会报错
      
    • if 练习

      • 从键盘输入一个整数,判断其是否是偶数,如果是偶数就输出YES,否则输出NO;
      #include <stdio.h>
      
      int main(){
          //从键盘输入一个整数,判断其是否是偶数,如果是偶数就输出YES,否则输出NO;
          // 定义一个变量
          int num = -1;
          // 提示用户如何输入
          printf("请输入一个整数,以回车键结束;\n");
          // 接收用户的输入
          scanf("%i", &num);
          // if语句判断是偶数则输出YES ,否则输出NO;
          if(0 == num % 2){
              // 偶数
               printf("YES");
          }else{
              //  奇数
              printf("NO");
          }
          return 0;
      }
      
      
      • 接收用户输入的1~7的整数,根据用户输入的整数,输出对应的星期几
      #include <stdio.h>
      
      int main()
      {
          //接收用户输入的1~7的整数,根据用户输入的整数,输出对应的星期几
          // 定义变量
          int num = -1;
          // 提示用户输入
          printf("请输入1~7的整数:");
          // 接收用户的输入
          scanf("%i", &num);
          // 判断对应的值
          if(num < 1 || num > 7){
              printf("对不起,你输入的数有误! 请重新打开输入\n");
          }else if(1 == num){
              printf("星期一\n");
          }else if(2 == num){
              printf("星期二\n");
          }else if(3 == num){
              printf("星期三\n");
          }else if(4 == num){
              printf("星期四\n");
          }else if(5 == num){
              printf("星期五\n");
          }else if(6 == num){
              printf("星期六\n");
          }else {
              printf("星期日");
          }
          return 0;
      }
      
      
      • 接收用户输入的一个整数month代表月份,根据月份输出对应的季节
      #include <stdio.h>
      
      int main()
      {
          // 接收用户输入的一个整数month代表月份,根据月份输出对应的季节
          // 定义变量
          int month = -1;
          // 提示用户正确输入
          printf("请输入月份:");
          // 接收数据
          scanf("%i", &month);
         // 判断输入,输出相应的季节
          if(month < 1 || month > 12){
              printf("请重新输入月份");
          }else if(month >= 3 && month <= 5){
              printf("春季\n");
          }else if(month >=6 && month <= 8){
              printf("夏季\n");
          }else if(month >= 9 && month <= 11){
              printf("秋季\n");
          }else{
              printf("冬季\n");
          }
      
          return 0;
      }
      
      • 接收用户输入的两个整数,判断大小后输出较大的那个数
      #include <stdio.h>
      
      int main()
      {
          // 接收用户输入的两个整数,判断大小后输出较大的那个数
          // 定义两个变量;
          int a = -1, b = -1;
          // 提示用户输入两个数
          printf("请输入两个数, 以逗号隔开:\n");
          // 接收用户输入的两个数
          scanf("%i,%i", &a, &b);
          // 判断大小
          if(a > b){  // a>b,输出a;
              printf("Max = %i", a);
          }else{
              // b > a,  输出b;
              printf("Max = %i", b);
          }
          return 0;
      }
      
      • 接收用户输入的三个整数,判断大小后输出较大的那个数
      // 定义三个变量:
      int a = -1, b = -1, c = -1;
      // 定义最大值
      int max =  -1;
      // 提示用户输入三个整数;
      printf("请输入三个整数,以逗号隔开:\n");
      // 接收数据
      scanf("%i,%i,%i", &a, &b, &c);
      // 判断大小
      if(a > b){
          if(a > c){
              max = a;
          }else{
              max = c;
          }
      }else{
          if(b > c){
              max = b;
          }else{
              max = c;
          }
      }
      // 输入最大值;
      printf("max = %i", max);
      
      • 接收用户输入的三个整数,排序后输出
      // 定义用户输入的三个数
      int a = -1, b = -1, c = -1;
      // 定义临时变量
      int temp = -1;
      //提示用户输入格式:
      printf("请输入三个整数, 以逗号隔开, 最后以回车结束:\n");
      // 接收用户输入:
      scanf("%i,%i,%i", &a, &b, &c);
      // 进行两个比较;
      if(a > b){
          temp = a;
          a = b;
          b = temp;
      }
      if(b > c){  // 得到最值c
          temp = b;
          b = c;
          c = temp;
      }
      
      if(a > b){  // 得到最值b
          temp = a;
          a = b;
          b = temp;
      }
      // 输出结果
      printf("%i,%i,%i" , a, b, c);
      
      

    2. 选择结构 switch

    • 格式:
    switch(表达式){
        case 常量表达式1:   // 相当于else if
            语句1;
            break;
        case 常量表达式2:
            语句2; 
            break;
        case 常量表达式n:
            语句n;
            break;
        default:   // 相当于else
            语句n+1;
            break;
    }
    
    
    
    • 执行流程:
      • 1.计算switch后面()中表达式的结果;
      • 2.利用计算的结果从上之下的和switch后面{}中的case的表达式的值依次比较;
      • 3.一旦发现switch 表达式的值和case表达式的值相同,就执行该case后面的语句;
      • 4.一旦某个case被执行,其他的case就不会执行了
      • 5.如果所有case表达式的值和switch表达式的值都不相等,那么执行default后面的语句;
    int day = 3;
        switch (day){
        case 1:
            printf("星期一");
            break;
        case 2:
            printf("星期二");
            break;
        default :
            printf("Other");
            break;
        }
        // 执行结果为: Other;
    

    switch注意点

    • switch中只要任意一个case匹配, 其它所有的case和default都会失效. 所以如果case和default后面没有break就会出现穿透问题,break在switch中的作用,就是跳出switch语句(结束当前的switch语句);
      image
    • switch条件表达式的类型必须是整型, 或者可以被提升为整型的值(char、short)

    • case的值只能是常量,不能是变量, 并且还必须是整型, 或者可以被提升为整型的值(char、short)

    • case后面常量表达式的值不能相同

    • case后面不能定义变量要想定义变量,必须给case加上大括号

    • switch中default可以省略

    • switch中default的位置不一定要写到最后, 无论放到哪都会等到所有case都不匹配才会执行(穿透问题除外)记住一点: default永远写在最后;

    相关文章

      网友评论

          本文标题:01-C语言流程控制-if和switch条件语句

          本文链接:https://www.haomeiwen.com/subject/bwelwftx.html