Linux基础26-C语言篇之分支结构Ⅲ【入门级】

发布于:2025-02-21 ⋅ 阅读:(19) ⋅ 点赞:(0)

用switch语句实现分支结构

我们可以使用switch实现多分支选择结构(多分支也被称为多路分支)

语法:

switch (表达式)//表达式的结果只能是字符或者整型
{
    case 常量表达式:// 这里一般使用自变量或者符号常量或者枚举
        语句1;
        break;
    case 常量表达式2:
        语句2;
        break;
     ...
     case 常量表达式n:
        语句n;
    default:
        语句n+1;
        break;//一般省略
        
}

流程图:
在这里插入图片描述

说明:

①switch后括号内的表达式可以是任意类型的表达式,但是表达式的值尽量是整型字符型枚举

②若表达式的值与某个常量表达式的值相等时,执行此case后面的语句;若没有相等的值时,执行default后面的语句。

③每个case后面的常量表达式的值必须不相同,否则出现矛盾。

④各个case出现的次序不影响执行结果。

⑤case后面的语句若无break语句,则执行完本case语句后会接着执行下面的case,直到遇到下面的break为止。

⑥多个case共用一组语句

案例:

  • 需求:按照考试成绩的等级输出百分之分数段

  • 分析:

    • 设分段原则如下:
      • A级:85~100段
      • B级:70~84段
      • C级:60~69级
      • D级:<60段
    • 输入其他字符时错误
  • 代码:

    #include <stdio.h>
    // 案例1:按照考试成绩的等级输出百分制分数段
    int switch_test1()
    {
    // 创建一个变量,用来存放考试等级
        char grade;
    // 通过控制台输入一个字符
       printf("请输入一个字符:\n");
    	scanf("%c",&grade);
    // 校验,根据等级输出分数段 Y
       switch(grade)
        {
    case 'A':
    printf("85~100\n");
    break;
    case 'B':
    printf("70~84\n");
    break;
    case 'C':
    printf("60~69\n");
    break;
    case 'D':
    printf("<60\n");
    break;
    default:
    printf("Error\n");
    break;// 如果default在switch的最下面,break是可以省略,反之不能省略。
    }
    }
    int main(int argc,char *argv[])
    {
    switch_test1();
    return 0;
    }
    
    

案例:

  • 需求:若要求按照百分制考试分数输出等级。

  • 分析:

    • 若分段原则如下:
      • 90~100 A级
      • 80~89 B级
      • 70~79 C级
      • 60~69 D级
      • 其他 E级
  • 代码:

    #include <stdio.h>
    // 需求:若要求按照百分制考试分数输出等级
    int switch_test2()
    {
    // 创建一个变量,存储成绩
    int score;
    // 通过键盘输入一个成绩
    printf("请输入考试成绩:\n");
    scanf("%d",&score);
    // 校验,根据成绩输出等级
    switch(score/10)
    {
    case 10:
    case 9:
    printf("A\n");
    break;
    case 8:
    printf("B\n");
    break;
    case 7:
    printf("C\n");
    break;
    case 6:
    printf("D\n");
    break;
    default:
    printf("Error\n");
    }
        }
    int main(int argc,char *argv[])
    {
    switch_test2();
    return 0;
    }
    
    

案例:

  • 需求:若要求按照百分之考试分数输出等级。

  • 分析:

    • 若分段原则如下:
      • 90~100 A级
      • 80~89 B级
      • 70~79 C级
      • 60~69 D级
      • 其他 E级
  • 代码:

    #include <stdio.h>
    // 需求:若要求按照百分制考试分数输出等级
    int switch_test2()
    {
    // 创建一个变量,存储成绩
    int score;
    // 通过键盘输入一个成绩
    printf("请输入考试成绩:\n");
    scanf("%d",&score);
    // 校验,根据成绩输出等级
    switch(score/10)
    {
    case 10:
    case 9:
    printf("A\n");
    break;
    case 8:
    printf("B\n");
    break;
    case 7:
    printf("C\n");
    break;
    case 6:
    printf("D\n");
    break;
    default:
    printf("Error\n");
    }
    }
    int main(int argc,char *argv[])
    {
    switch_test2();
    return 0;
    }