当前位置: 首页 > news >正文

【时时三省】(C语言基础)用switch语句实现多分支选择结构

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

if语句只有两个分支可供选择,而实际问题中常常需要用到多分支的选择。例如,学生成绩分类(85分以上为A等,70 ~ 84分为B等,60 ~ 69分为C等),人口统计分类(按年龄分为老、中、青、少、儿童),工资统计分类,银行存款分类等。当然这些都可以用嵌套的if语句来处理,但如果分支较多,则嵌套的if语句层数多,程序冗长而且可读性降低。C语言提供switch语句直接处理多分支选择。switch语句是多分支选择语句。

例题:

要求按照考试成绩的等级输出百分制分数段,A等为85分以上,B等为70 ~84分,C等为60 ~69分,D等为60分以下。成绩的等级由键盘输入。解题思路:这是一个多分支选择问题,根据百分制分数将学生成绩分为4个等级,如果用if语句来处理至少要用3层嵌套的if,进行3次检查判断。用switch语句,进行一次检查即可得到结果。

编写程序:

运行结果 :

 从键盘输入大写字母A,按回车键,程序输出对应的分数段。

程序分析:

等级grade定义为字符变量,从键盘输入一个大写字母,赋给变量grade , switch得到grade的值并把它和各case中给定的值( ' A ',' B ',' C ',D '之一)相比较,如果和其中之一相同(称为匹配),则执行该case后面的语句(即printf语句)。输出相应的信息。如果输入的字符与A ',' B ',C,,D '都不相同,就执行default后面的语句,输出“输入数据有错”的信息。

注意在每个case后面后的语句中,最后都有一个break语句,它的作用是使流程转到switch语句的末尾(即右花括号处)。

 

可以看到,switch语句的作用是根据表达式的值,使流程跳转到不同的语句。switch语句的一般形式如下:

switch(表达式)

{

case  常量1:语句1

case  常量2:语句2

case  常量n:语句n

default :     语句n+1

}

说明:

( 1 )上面switch一般形式中括号内的“表达式”,其值的类型应为整数类型(包括字符型)。

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

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

( 4 )各个case标号出现次序不影响执行结果。例如,可以先出现default标号,再出现“case' D '…”然后是“case ' B’:…”。

( 5 )每一个case常量必须互不相同;否则就会出现互相矛盾的现象(对switch表达式的同一个值,有两种或多种执行方案)。

( 6 ) case标号只起标记的作用。在执行switch语句时,根据switch表达式的值找到匹配的入口标号,并不在此进行条件检查,在执行完一个case标号后面的语句后,就从此标号开始执行下去,不再进行判断。例如在例题中,如果在各case子句中没有break语句,将连续输出:

Your score : 85 ~ 100

70 ~ 84

60 ~ 69

< 60

enter data error !

注意:一般情况下,在执行一个case子句后,应当用break语句使流程跳出switch结构,即终止switch语句的执行。最后一个case子句(今为default子句)中可不必加break语句,因为流程已到了switch结构的结束处。

例如:

case ' A’:

case ' B ' :

case ' C ' : printf ( " > 60 \ n " ) ; break ;

当grade的值为' A ',' B ',' C '时都执行同一组语句,输出“> 60”,然后换行。

 

 

相关文章:

【时时三省】(C语言基础)用switch语句实现多分支选择结构

山不在高&#xff0c;有仙则名。水不在深&#xff0c;有龙则灵。 ----CSDN 时时三省 if语句只有两个分支可供选择&#xff0c;而实际问题中常常需要用到多分支的选择。例如&#xff0c;学生成绩分类(85分以上为A等&#xff0c;70 ~ 84分为B等&#xff0c;60 ~ 69分为C等)&…...

为您的 Web 应用选择最佳文档阅读器

为显示选择合适的文档查看器是开发 Web 应用过程中至关重要的一步。文档查看器应能在提供功能性的同时&#xff0c;确保用户体验的流畅性。 开发人员必须评估多种因素&#xff0c;以确保效率、性能和兼容性。本文将帮助您了解影响用户文档浏览体验成功与否的关键指标。 渲染质…...

js逆向入门图灵爬虫练习平台第六题

地址&#xff1a;aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNi8 观察可以发现请求头有有字段加密和响应结果加密 查看启动器 开始断点调试 直接复制里面的js内容&#xff0c;测试函数...

招商蛇口 | 回归生活本身,革新CID的143㎡改善标准

时光流转&#xff0c;城市向前。在西安这片千年文脉的沃土之上&#xff0c;招商蛇口已深耕11载&#xff0c;用21座标杆作品&#xff0c;为17000余户家庭筑就理想栖居。从曲江到高新&#xff0c;从城市更新到人居焕新&#xff0c;每一座作品都是对“美好生活承载者”使命的践行。…...

第6课:分布式多智能体系统架构

分布式多智能体系统架构&#xff1a;从算力协同到微服务部署的工程化实践 一、引言&#xff1a;当智能体规模突破百级&#xff1a;分布式架构为何成为必选项&#xff1f; 在多智能体系统&#xff08;MAS&#xff09;从“实验室Demo”走向“工业级应用”的过程中&#xff0c;传…...

Vue3 Teleport 深度解析与面试技巧

Vue3 Teleport 深度解析与面试技巧 一、Teleport 核心价值解析 1.1 诞生背景与设计哲学 DOM层级困境&#xff1a;传统组件树与视觉层级的矛盾样式污染问题&#xff1a;z-index层级管理的世纪难题逻辑解耦需求&#xff1a;业务逻辑与DOM结构的正交性要求 1.2 核心能力矩阵 能…...

断言与反射——以golang为例

断言 x.(T) 检查x的动态类型是否是T&#xff0c;其中x必须是接口值。 简单使用 func main() {var x interface{}x 100value1, ok : x.(int)if ok {fmt.Println(value1)}value2, ok : x.(string)if ok {//未打印fmt.Println(value2)} }需要注意如果不接受第二个参数就是OK,这…...

react函数组件中,className字符串、style对象如何在父子组件之间传递

一、需要传递的样式在父组件的scss文件中提前写好 子组件的dom解析后&#xff1a; 二、向子组件直接传递style对象...

WHAT - React Portal 机制:将子组件渲染到 DOM 的指定节点

文章目录 适合场景基本语法示例&#xff1a;Modal 弹窗1. 创建一个简单的 Modal.tsx2. 在 App 中使用 为什么要用 Portal&#xff1f;TypeScript 中 Portal 类型定义&#xff1f; 适合场景 React Portal 是 React 提供的一种机制&#xff0c;让你可以将子组件渲染到 DOM 的指定…...

企业绿电消纳比例不达标?安科瑞微电网智慧能源平台助力企业低碳转型

方案配置支持请联系安科瑞电气周女士 企业绿电消纳政策是国家推动能源转型和实现“双碳”目标的重要抓手&#xff0c;近年来政策体系逐步完善。企业通过建设“源网荷储”一体化项目、虚拟电厂等技术&#xff0c;提升绿电消纳能力。 一、安科瑞提供解决方案 深耕用电业务&…...

uni-app初学

文章目录 1. pages.json 页面路由2. 图标3. 全局 CSS4. 首页4.1 整体框架4.2 完整代码4.3 轮播图 swiper4.3.1 image 4.4 公告4.4.1 uni-icons 4.5 分类 uni-row、uni-col4.6 商品列表 小程序开发网址&#xff1a; 注册小程序账号 微信开发者工具下载 uniapp 官网 HbuilderX 下…...

网络划分vlan隔离

隔离划分 比如我们想要将pc1和pc2隔离&#xff0c;我们只需在lsw1交换机中&#xff0c;如下配置&#xff1a; sys 先进入系统视图 先后输入 代表创建2个隔离区 vlan 10 vlan 20 然后进入0/0/1、0/0/2设置隔离类型&#xff0c;并划分隔离区域 int gi0/0/01 port l…...

HDCP(四)

HDCP驱动开发实战深度解析 以下从协议栈架构、核心模块实现、安全设计到硬件集成&#xff0c;结合HDCP 2.x规范与主流硬件平台&#xff08;如ARM、FPGA&#xff09;特性&#xff0c;系统拆解驱动开发关键环节&#xff1a; 1. 协议栈架构与模块划分 驱动分层设计 硬件抽象层&…...

大数据(7.4)Kafka存算分离架构深度实践:解锁对象存储的无限潜能

目录 一、传统架构的存储困境与破局1.1 数据爆炸时代的存储挑战1.2 存算分离的核心价值矩阵 二、对象存储集成架构设计2.1 分层存储核心组件2.2 关键配置参数优化 三、深度集成实践方案3.1 冷热数据分层策略3.1.1 存储策略性能对比 3.2 跨云数据湖方案 四、企业级应用案例4.1 金…...

SLAM文献之SuMa++: Efficient LiDAR-based Semantic SLAM

SuMa是基于Surfel的SLAM算法SuMa的改进版本&#xff0c;通过引入语义分割信息提升动态环境下的鲁棒性和回环检测性能。以下从算法原理和公式推导两方面详细阐述&#xff1a; 一、SuMa算法原理 1. 基础&#xff1a;SuMa算法 SuMa使用Surfel&#xff08;表面元素&#xff09;构…...

react中通过 EventEmitter 在组件间传递状态

要在 Reply 组件中通过 statusChangeEvent 发送状态值&#xff0c;并在 Select 组件中接收这个状态值 status&#xff0c;你可以按照以下步骤实现&#xff1a; //Event.jsimport EventEmitter from events;export const statusChangeEvent new EventEmitter();// 工单状态切换…...

机器学习 从入门到精通 day_03

1. KNN算法-分类 1.1 样本距离判断 明可夫斯基距离&#xff1a;欧式距离&#xff0c;明可夫斯基距离的特殊情况&#xff1b;曼哈顿距离&#xff0c;明可夫斯基距离的特殊情况。 两个样本的距离公式可以通过如下公式进行计算&#xff0c;又称为欧式距离。 &#xff08;…...

WHAT - React 两个重要的 Typescript 类型:ReactNode vs JSX.Element

文章目录 ReactNode 是什么&#xff1f;示例用途 JSX.Element 是什么&#xff1f;示例用途 ReactNode vs JSX.Element 对比使用建议其他相关类型例子总结 这两个类型 ReactNode 和 JSX.Element 在 React TypeScript 中经常出现&#xff0c;但它们含义不同&#xff0c;适用场景…...

了解 DeFi:去中心化金融的入门指南与未来展望

去中心化金融&#xff0c;或 DeFi&#xff0c;代表着全球金融体系运作方式的革命性转变。它是一个总称&#xff0c;指的是一个不断增长的去中心化应用程序&#xff08;dapp&#xff09;、协议和平台生态系统&#xff0c;这些生态系统构建在公共区块链网络上&#xff0c;无需传统…...

四旋翼无人机手动模式

无人机的手动模式&#xff08;Manual Mode&#xff09;是指飞手完全通过遥控器手动控制无人机的飞行姿态、高度、方向和速度&#xff0c;‌无需依赖自动稳定系统或辅助功能‌&#xff08;如GPS定位、气压计定高、视觉避障等&#xff09;。这种模式赋予操作者最大的操控自由度&a…...

航电系统之驱动系统篇

航电系统的驱动系统是航空电子系统中负责为各类电子设备、传感器、执行机构及控制模块提供稳定、可靠电能的关键部分。其核心功能在于将飞机电源系统的电能转换为适合航电设备使用的形式&#xff0c;确保航电系统在各种飞行条件下正常运行。以下从组成结构、工作原理、技术特点…...

《嵌入式开发实战:基于Linux串口的LED屏显系统设计与实现》

一、项目概述 本文介绍如何通过Linux系统的串口通信&#xff0c;驱动工业级LED显示屏实现动态数据展示。项目采用C语言开发&#xff0c;包含气象数据显示和实时时钟两大核心功能&#xff0c;涉及以下关键技术点&#xff1a; 串口通信协议配置 自定义数据帧封装 CRC16校验算法…...

记录一下移动端uView动态表单校验

uni-app开发uView必不可少&#xff0c;uView是uni-app生态专用的UI框架。 像element-ui一样uView也有自己的表单组件u-form。 对于下图这种列表数据该如何做表单校验&#xff0c;官方文档好像没有具体的案例&#xff0c;记录一下。 问题&#xff1a; 主要实现步骤&#xff1a…...

Django项目入门二

Django项目入门二 目录 1.修改部门数据 2.新增员工数据 3.修改员工数据 4.删除员工数据 一、修改部门数据 上一篇文章, 我们只剩下修改功能没有做了, 那在这篇文章, 我们给它补上。 在做之前, 我们需要对views.py文件进行调整, 由于我们考虑到有部门信息和员工信息, 如…...

Java创建Android自用证书

在 Android 开发中&#xff0c;如果需要创建一个自用的证书&#xff0c;可以使用 Java 开发工具包&#xff08;JDK&#xff09;自带的 keytool 工具。 KeystoreGenerator.java import java.io.BufferedReader; import java.io.File; import java.io.IOException; import java.…...

Redis——实现消息队列

目录 前言 基于List结构模拟消息队列 基于List实现消息队列优缺点 基于PubSub&#xff08;订阅者&#xff09;实现消息队列 示例 基于PubSub的消息队列的优缺点 基于Stream的消息队列 STREAM类型消息队列的XREAD命令特点&#xff1a; 基于Stream的消息队列-消费者组 基于…...

学习51单片机Day01---做实验前置一些内容

目录 一、前面要看的&#xff1a; 1.下载软件 2.如何开始做&#xff1f; 3.基本框架&#xff1a; 4.如何编译运行&#xff1a; 5.可以运行的样子&#xff1a; 6.怎么生成hex&#xff1a; 7.滴滴放到单片机上&#xff1a; 二、过程中可能出现的问题&#xff08;一直会更…...

pipe匿名管道实操(Linux)

管道相关函数 1 pipe 是 Unix/Linux 系统中的一个系统调用&#xff0c;用于创建一个匿名管道 #include <unistd.h> int pipe(int pipefd[2]); 参数说明&#xff1a; pipefd[2]&#xff1a;一个包含两个整数的数组&#xff0c;用于存储管道的文件描述符&#xff1a; pi…...

vscode 异常关闭后无法远程连接服务器

笔记本没关机只是合上&#xff0c;结果第二天上班整台笔记本高度发热发烧&#xff0c;吓坏了。。。 强制关机后再开机&#xff0c;幸好能用。但是vscode连接服务器一直不对。 解决方式&#xff1a; 解决一&#xff1a;打开VS Code菜单"View"->“Command Palatt…...

Rust主流框架性能比拼: Actix vs Axum vs Rocket

本内容是对知名性能评测博主 Anton Putra Actix (Rust) vs Axum (Rust) vs Rocket (Rust): Performance Benchmark in Kubernetes 内容的翻译与整理, 有适当删减, 相关指标和结论以原作为准 在以下中&#xff0c;我们将比较 Rust 生态中最受欢迎的几个框架。我会将三个应用程序…...

二氧化铪(HfO2)市场发展分析:从基础到前沿应用

引言&#xff1a;探索二氧化铪的重要性与市场潜力 在现代材料科学中&#xff0c;二氧化铪&#xff08;HfO2&#xff09;作为一种关键的高介电常数&#xff08;High-k&#xff09;材料&#xff0c;正逐渐成为半导体行业不可或缺的一部分。二氧化铪是一种白色的固体&#xff0c;…...

写一个简单的demo来理解数据库外键

准备工作 安装MySQL 确保已安装MySQL&#xff0c;并启动服务。可以通过命令行或工具&#xff08;如MySQL Workbench&#xff09;操作。 创建数据库 sql 复制 CREATE DATABASE school; USE school;创建父表和子表 步骤 1&#xff1a;创建父表&#xff08;students&#xff09;…...

Prompt-to-prompt image editing with cross attention control

Project Page: https://prompt-to-prompt.github.io Paper: https://arxiv.org/abs/2208.01626 Code: https://github.com/google/prompt-to-prompt 文章目录 1. Introduction2. Method2.1 Cross-attention in text-conditioned Diffusion Models2.2 Controlling the Cross-att…...

C++Cherno 学习笔记day18 [71]-[75] C++安全、PCH、dynamic_cast、基准测试、结构化绑定

b站Cherno的课[71]-[75] 一、现代C中的安全以及如何教授二、C的预编译头文件PCH三、C的dynamic_cast四、C的基准测试五、C的结构化绑定 一、现代C中的安全以及如何教授 安全编程&#xff0c;或者说C编程中&#xff0c;降低崩溃&#xff0c;内存泄露、非法访问等问题 C11&#…...

根据 PID 找到对应的 Docker 容器

引言 在日常运维与调试过程中&#xff0c;我们常常需要查找某个进程所属的 Docker 容器。当系统出现问题或资源异常时&#xff0c;根据进程的 PID 找到其所属容器可以帮助我们迅速定位问题。本文将介绍如何利用 Linux 的 cgroup 机制&#xff0c;以及 Docker 提供的工具来完成…...

传统项目纯前端实现导出excel之xlsx.bundle.js

传统项目纯前端实现导出excel之xlsx.js 自从vue问世后&#xff0c;使得前端开发更加简洁从容&#xff0c;极大的丰富组件样式和页面渲染效果&#xff0c;使得前端功能的可扩展性得到极大地加强。虽然vue的使用对于前后端分离的项目对于功能实现与扩展有了质的飞跃&#xff0c;但…...

大型手游 DDoS 攻击怎么防护?游戏盾 SDK 技术解剖实录

一、重灾区警报&#xff1a;大型手游为何成为 DDoS 靶心&#xff1f; 1. 血淋淋的行业数据 攻击规模暴涨&#xff1a;2024 年全球手游遭受 > 300Gbps 攻击次数同比激增 173%&#xff08;Akamai 报告&#xff09;经济杀伤链&#xff1a;1 小时 500Gbps 攻击可造成&#xff…...

【Harmony】状态管理(V1)

一、概述 文章目录 一、概述二、组件状态管理1、State1.1、State简介1.2、State简单示例 2、Prop2.1、Prop简介2.2、Prop底层实现原理2.3、Prop简单示例 3、Link3.1、Link简介3.2、Link底层实现原理3.3、Link简单示例 4、Provide Consume4.1、Provide Consume简介4.2、Provide …...

udev规则实例:监听usb插拔事件并做出相应

在 Linux 和 Android 系统中&#xff0c;USB 插拔事件的判断涉及从内核到用户空间的多层协作。以下是源码中关键判断点的梳理&#xff1a; 事件流程 内核层&#xff1a;UEvent 机制 USB 插拔事件首先由内核通过 UEvent 机制 上报。内核中的 USB 驱动&#xff08;如 drivers/…...

【算法】【蓝桥23国A软件C】四版代码思路分析与逐步优化

题目来源&#xff1a;第十四届蓝桥杯大赛软件赛国赛C/C 大学 A 组 题目描述&#xff1a; 问题描述 给定一个 WH 的长方形&#xff0c;两边长度均为整数。小蓝想把它切割为很多个边长为整数的小正方形。假设切割没有任何损耗&#xff0c;正方形的边长至少为 2&#xff0c;不允…...

程序设计竞赛1

题目1 2025年春节期间&#xff0c;DeepSeek作为“AI界的天降紫微星”成为新晋效率神器&#xff0c;热度席卷全球&#xff0c;其团队主创成员也迅速引起了大家的关注。 DeepSeek之所以能在短时间内取得如此不凡成绩&#xff0c;与其团队成员的背景密不可分。团队汇聚了来自清华…...

android studio 2022打开了v1 签名但是生成的apk没有v1签名问题

我使用了Android Studio Flamingo | 2022.2.1 Patch 2版本的IDE编译了一个apk,但是apksigner查看apk的签名信息时,发现只有v2签名,没有v1签名。 apksigner verify -v app-debug.apk ​​​​​​​Verifies Verified using v1 scheme (JAR signing): false Verified usin…...

EPGAN:融合高效注意力的生成对抗网络图像修复算法

简介 简介:利用掩码设计来遮掉输入图像的一部分,将这类图像输入给生成器。生成器结合ECA注意力机制架构,利用感知损失、对抗损失和均方误差损失的加权和来作为生成器的损失计算。鉴别器分别对应掩码和整张图做损失计算。 论文题目:融合高效注意力的生成对抗网络图像修复算…...

使用模板报错:_G.unicode.len(orgline.text_stripped:gsub(“ “,““))

使用aegisub制作歌词特效&#xff0c;白嫖大佬的自动化模板时&#xff0c;经常会遇到如下报错&#xff1a; Runtime error in template code: Expected 1 arguments, got 2 Code producing error: ci {0,0}; cn _G.unicode.len(orgline.text_stripped:gsub(" ",&q…...

linux入门六:Linux Shell 编程

一、Shell 概述 1. 什么是 Shell&#xff1f; Shell 是 Linux 系统中用户与内核之间的桥梁&#xff0c;作为 命令解析器&#xff0c;它负责将用户输入的文本命令转换为计算机可执行的机器指令。 本质&#xff1a;Shell 是一个程序&#xff08;如常见的 Bash、Zsh&#xff09…...

Franka 机器人x Dexterity Gen引领遥操作精细任务新时代

教授机器人工具灵活操作难题 在教授机器人灵活使用工具方面&#xff0c;目前主要有两种策略&#xff1a;一是人类遥控&#xff08;用于模仿学习&#xff09;&#xff0c;二是模拟到现实的强化学习。然而&#xff0c;这两种方法均存在明显的局限性。 1、人类遥控&#xff08;用…...

网络通讯协议UDP转发TCP工具_UdpToTcpRelay_双向版

UDP/TCP网络转发器程序说明书 1. 程序概述 本程序是一个高性能网络数据转发工具&#xff0c;支持UDP和TCP协议之间的双向数据转发&#xff0c;并具备以下核心功能&#xff1a; 协议转换&#xff1a;实现UDP↔TCP协议转换数据转换&#xff1a;支持十六进制/ASCII格式的数据转…...

深入理解 RxSwift 中的 Driver:用法与实践

目录 前言 一、什么是Driver 1.不会发出错误 2.主线程保证 3.可重放 4.易于绑定 二、Driver vs Observable 三、使用场景 1.绑定数据到UI控件 2.响应用户交互 3.需要线程安全的逻辑 4.如何使用Driver&#xff1f; 1.绑定文本输入到Label 2.处理按钮点击事件 3…...

【XML基础-3】深入理解XML Schema:XML的强大语义约束机制

XML&#xff08;可扩展标记语言&#xff09;作为数据交换的标准格式&#xff0c;在当今信息技术领域扮演着重要角色。然而&#xff0c;仅有基本的XML语法规则往往不足以满足复杂的数据验证需求。这正是XML Schema发挥作用的地方——它为XML文档提供了强大的语义约束能力。本文将…...

神经网络语言模型与统计语言模型的比较

神经网络语言模型&#xff08;Neural Language Models, NLMs&#xff09;与统计语言模型&#xff08;Statistical Language Models, SLMs&#xff09;是自然语言处理&#xff08;NLP&#xff09;中两类核心的语言建模方法&#xff0c;其核心差异体现在建模方式、表示能力、数据…...