用switch语句实现多分支选择结构

我们之前学到的if语句时只有两个分支可以选择,
遇到多分支的时候就要使用嵌套,
导致代码较长,
现在我们可以用switch语句来简化多分支的代码。

我们先来看一个程序:

要求按照考试成绩的等级输出百分制分数段,
A等为85分以上,
B等为70~84分,
C等为60~69分,
D等为60分以下。
成绩的等级由键盘输入。

这个就是多分支选择结构

我们直接来看代码:

#include <stdio.h>
int main()
{
    char grade;
    scanf("%c", &grade);
    printf("Your score:");
    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("enter data error!\n");
    }
    return 0;
}

在这里插入图片描述
针对这个程序,里面是有很多新奇的东西的,我们就先来看一下。
从整体来分析,这个就是分段来进行程序输出的,四个case引导出条件。
也可以从中看出switch语句的一般形式:

switch(表达式)
{
case 常量1 : 语句1
case 常量2 : 语句2
… … …
case 常量n : 语句n
default : 语句n + 1
}

switch后的表达式,其值的类型应为整数类型(包括字符型)

switch像下面的花括号内是一个复合语句,
这个复合语句包含若干个语句,它是switch语句的语句体。
与具体内包含多个以关键字case开头的语句行和最多一个以default开头的行。
case后面跟一个常量或常量表达式
case ’ '和default都是起标号的作用,用来标记一个位置。
在执行switch语句的时候,计算switch后的表达式的值,然后将它与各case标号比较
如果与某一个case标号中的常量相同,流程就转到此case标号后面的语句
如果没有与switch表达式相匹配的case常量,流程就转去执行default标号后面的语句。

在整个语句中,可以没有default标号,此时如果没有与switch表达式相匹配的case常量,则不执行任何语句,流程转到switch语句的下一个语句。

各个case标号出现次序不影响执行结果。

每一个case常量必须互不相同,
否则就会出现相互矛盾的现象。

我们来看下面的一幅图:
在这里插入图片描述
先不考虑break的意思
现在把switch(表达式)当作一个球。
上图中的四条线分别在不同的高度,
初始判定这个球应该走哪个高度,
之后在球的路径上,四个凹下的表示break,如果关闭不会影响球在本高度的移动。
那么,如果没有break,求从2进入,结果不仅会输出2的,还会输出3和4的,
有break时,结果只会输出本高度的。

就像上面的程序,如果我们给顶数据是A,每一个case语句后面都没有break,那么结果如下:
在这里插入图片描述
break语句就是使流程跳出switch结构,即终止switch语句的执行。

多个case标号是可以共用一组执行语句的,
如:
在这里插入图片描述
在这里插入图片描述

本篇内容到此结束。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值