C语言中关于switch语句的理解

news/2024/7/15 14:44:55

 首先我们来看一下switch的定义

switch(整型表达式)

{

        case  整型常量表达式:

                   语句;

}

 我们在书写时要注意一下,无论是在switch还是case,后面跟着的都一定要是整型,而且case这一行写完时,最后要用" "而非" "

另外,当我们写完一条case语句时,要在后面加上break;不然系统就会把这条case以及它后面的case语句全部输出,就像这样

#include <stdio.h>
int main() {
    int i = 0;
    scanf("%d", &i);
    switch (i) {
        case 1:
            printf("大学\n");
        case 2:
            printf("大专\n");
        case 3:
            printf("高中\n");
        case 4:
            printf("职高\n");
        case 5:
            printf("中专\n");
        case 6:
            printf("初中\n");
        case 7:
            printf("小学\n");
  
    }
}


最终输出结果就是这样,而我们加上break之后输入的是哪个case出来的也就是那个case 

#include <stdio.h>
int main() {
    int i = 0;
    scanf("%d", &i);
    switch (i) {
        case 1:
            printf("大学\n");
            break;
        case 2:
            printf("大专\n");
            break;
        case 3:
            printf("高中\n");
            break;
        case 4:
            printf("职高\n");
            break;
        case 5:
            printf("中专\n");
            break;
        case 6:
            printf("初中\n");
            break;
        case 7:
            printf("小学\n");
            break;
    }
}


那么我们想要输入1,2时显示的是成年人,输入3到7时显示的是未成年人应该怎么办呢?

因为case有一个不加break就会向下执行的特性,所以我们可以这样

#include <stdio.h>
int main() {
    int i = 0;
    scanf("%d", &i);
    switch (i) {
        case 1:
        case 2:
            printf("成年人\n");
            break;
        case 3:
        case 4:
        case 5:
        case 6:
        case 7:
            printf("未成年人\n");
            break;
    }
}

那么我们这里只有7个case,如果输入的是比7大的数字时,我们就需要default这条语句了

default:默认其他选项,当case里面的值都不匹配时,就会跳入default

#include <stdio.h>
int main() {
    int i = 0;
    scanf("%d", &i);
    switch (i) {
        case 1:
            printf("大学\n");
            break;
        case 2:
            printf("大专\n");
            break;
        case 3:
            printf("高中\n");
            break;
        case 4:
            printf("职高\n");
            break;
        case 5:
            printf("中专\n");
            break;
        case 6:
            printf("初中\n");
            break;
        case 7:
            printf("小学\n");
            break;
        default:
            printf("输入错误\n");
            break;
    }
}

这个时候我们输入8,系统就会跳到default里面,输入default里面的语句。


http://lihuaxi.xjx100.cn/news/1920456.html

相关文章

SQL备忘--子查询与ALL/ANY运算符

概念 在SQL查询语句中包含了其他的查询语句&#xff0c;出现了SQL语句的嵌套&#xff0c;即为使用了嵌套子查询 子查询用法 子查询可以用在&#xff1a; SELECT查询字段中FROM表名语句中WHERE条件中 由此可见子查询用法广泛&#xff0c;可用在SQL基本语句的每个位置。但具…

【多线程】常见问题简单总结

目录 1. 竞态条件&#xff08;Race Condition&#xff09; 场景: 解决方法: 2. 死锁&#xff08;Deadlock&#xff09; 场景: 解决方法: 3. 线程饥饿&#xff08;Thread Starvation&#xff09; 场景: 解决方法: 4. 活锁&#xff08;Livelock&#xff09; 场景: 解…

K8S Helm安装RocketMQ standalone单机版,配置外网地址注册到nameserver中方便本地开发

K8S Helm安装RocketMQ standalone单机版&#xff0c;配置外网地址注册到nameserver中方便本地开发 helm地址 rocketmq 3.0.2 sir5kong/rocketmq helm repo add rocketmq https://helm-charts.itboon.top/rocketmq helm pull rocketmq/rocketmq tar -xvf rocketmq-3.0.2.t…

【五】【C语言\动态规划】删除并获得点数、粉刷房子、买卖股票的最佳时机含冷冻期,三道题目深度解析

动态规划 动态规划就像是解决问题的一种策略&#xff0c;它可以帮助我们更高效地找到问题的解决方案。这个策略的核心思想就是将问题分解为一系列的小问题&#xff0c;并将每个小问题的解保存起来。这样&#xff0c;当我们需要解决原始问题的时候&#xff0c;我们就可以直接利…

记矩阵基础概念

转自up&#xff1a;Naruto_Qcsdn&#xff1a;三维空间几何变换矩阵 先贴个站里分享的基础概念。 learn form 肥猫同学VFX b站&#xff1a;会用transform就会用矩阵 移动 旋转 缩放 1.transofrm ——输出变化矩阵 可以移动transform查看变化去理解 位移 缩放 旋转 由此—…

Java开发框架和中间件面试题(9)

目录 102.你了解秒杀吗&#xff1f;怎么设计&#xff1f; 103.什么是缓存穿透&#xff1f;怎么解决&#xff1f; 102.你了解秒杀吗&#xff1f;怎么设计&#xff1f; 1.设计难点&#xff1a;并发量大&#xff0c;应用&#xff0c;数据库都承受不了。另外难控制超卖。 2.设计…

redis 从0到1完整学习 (十):RedisObject 数据结构

文章目录 1. 引言2. redis 源码下载3. redisObject 数据结构4. 参考 1. 引言 前情提要&#xff1a; 《redis 从0到1完整学习 &#xff08;一&#xff09;&#xff1a;安装&初识 redis》 《redis 从0到1完整学习 &#xff08;二&#xff09;&#xff1a;redis 常用命令》 《…

鸿蒙Harmony(八)ArkUI--状态管理器之@State

状态管理 在声明式UI中&#xff0c;是以状态驱动视图更新 状态&#xff1a;指驱动视图更新的数据&#xff08;被装饰器标记的变量&#xff09; StateProp 和 LinkProvide和 Consume State State装饰器标记的变量必须初始化&#xff0c;不能为空值State支持Object 、class、…