【C语言】之switch语句

简介: C语言的选择结构语句(switch)

switch语句

1.一般形式
switch(表达式){

    case 常量1:语句序列1;break;

    case 常量2:语句序列2;break;

    ......

    case 常量n:语句序列n;break;

    default:语句序列n+1;

}

计算表达式的值,并取整,那表达式取证的值与常量n进行等量判断,如果两个值相等则执行语句序列n,并跳出switch结构(因为语句序列n后面有break语句,break语句:各语句序列最后的break语句,用于跳出switch语句),default(可写可不写)相当于if语句里的else语句,若表达式的值与所有常量均不相等,则执行语句序列n+1,因为default是switch语句的最后一个部分所以后面不用加break了。

实例
输入一个数字输出对应的周几

#include "stdio.h"
 
int main() {
    int day;
    scanf("%d", &day);
 
    switch (day) {
        case 1:
            printf("周一!");
            break;
 
        case 2:
            printf("周二!");
            break;
 
        case 3:
            printf("周三!");
            break;
 
        case 4:
            printf("周四!");
            break;
 
        case 5:
            printf("周五!");
            break;
 
        case 6:
            printf("周六!");
            break;
 
        case 7:
            printf("周七!");
            break;
 
        default:
            printf("输入有效数字!");
    }
 
    return 0;
}

执行结果:

image.png

如果不加break语句的执行结果:

image.png

2.省略式

  case 常量1:语句序列1;break;

  case 常量2:语句序列2;break;

  case 常量3:语句序列3;break;

  case 常量4:语句序列4;break;

如果语句序列1,语句序列2,语句序列3,语句序列4相等的话可以写成:

   case 常量1:

   case 常量2:

   case 常量3:

   case 常量4:语句序列4;break;

实例
输入月份,输出该月的天数

代码:

#include "stdio.h"
 
int main() {
    int month, day;
    printf("请输入月份:");
    scanf("%d", &month);
 
    switch (month) {
        case 2:
            day = 29;
            break;
 
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
 
        default:
            day = 31;
    }
 
    printf("第%d月有%d天", month, day);
    return 0;
}

执行结果:

image.png

易错点:
1.case后面只能写成常量而不是范围也不能是小数不能包含变量,例如2~4,a~b,3.14,x+1等

2.case后面容易漏写break语句,如果没有加break语句,它就会把以下所有语句序列都执行一遍直到执行到break语句或default语句

三、if与switch语句混用
实例
输入年份和月份,输出该月的天数

代码:

#include "stdio.h"
 
int main() {
    int year, month, day;
    printf("请输入月份:");
    scanf("%d%d", &year, &month);
 
    switch (month) {
        case 2:
            day = 28;
 
            if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {
                day = day + 1;
            }
 
            break;
 
        case 4:
        case 6:
        case 9:
        case 11:
            day = 30;
            break;
 
        default:
            day = 31;
    }
 
    printf("这个月有%d天", day);
    return 0;
}

执行结果:

image.png

四、总结
if语句的条件表达式比较直接,switch语句的表达式需要构造。switch的效率比if多,一般判断条件较多的时候用switch比如:分数,月份。较少的时候用if-else,switch只计算一次,if-else每一个条件都要计算。

相关文章
|
5月前
|
程序员 Python
16.C语言:用switch语句实现多分支选择结构
16.C语言:用switch语句实现多分支选择结构
52 0
|
5月前
|
存储 C语言
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
C语言实现十进制转化为十六进制-------数组,switch语句,while循环语句
|
3月前
|
存储 编译器 C语言
c语言选择结构的switch语句的细节
c语言选择结构的switch语句的细节
|
4月前
|
C语言
C语言条件判断:if、else、else if 和 switch 详解
C语言条件判断:if、else、else if 和 switch 详解
133 0
|
5月前
|
存储 程序员 C语言
C语言中的嵌套语句与Switch语句的深入解析
C语言中的嵌套语句与Switch语句的深入解析
72 1
|
5月前
|
存储 C语言
C语言中的switch语句编程
C语言中的switch语句编程
109 0
|
5月前
|
编译器 C语言 C++
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
【C语言】分支和循环 ---- if、switch、while、for、goto语句, 理解getchar和putchar函数
41 0
|
5月前
|
Java C语言 C++
C语言中用switch语句实现多分支选择结构
C语言中用switch语句实现多分支选择结构
155 0
|
5月前
|
C语言 C++
C语言9🔥:switch case 语句
C语言9🔥:switch case 语句
98 0
|
5月前
|
C语言
C语言中,switch语句
C语言中,switch语句
64 0