C语言分支结构详解
一、引言
在 C 语言中,分支结构是程序控制流的重要组成部分。它允许程序根据不同的条件执行不同的代码块,从而实现更灵活和复杂的逻辑。分支结构使得程序能够根据输入、变量的值或其他条件来做出决策,决定程序的执行路径。
二、if 语句
- 基本形式
if (表达式)
语句;
- 当表达式的值为非零(即逻辑真)时,执行紧跟在
if
后面的语句;如果表达式的值为零(即逻辑假),则跳过该语句。
- 示例
#include <stdio.h>int main() {int num = 10;if (num > 5) {printf("The number is greater than 5.\n");}return 0;
}
- if - else 结构
if (表达式)
语句1;
else
语句2;
- 如果表达式的值为真,执行语句 1;否则,执行语句 2。
- 示例
#include <stdio.h>int main() {int num = 3;if (num > 5) {printf("The number is greater than 5.\n");} else {printf("The number is less than or equal to 5.\n");}return 0;
}
- 多重 if - else if 结构
if (表达式1)
语句1;
else if (表达式2)
语句2;
else if (表达式3)
语句3;
...
else
语句n;
- 依次判断各个表达式的值,当某个表达式的值为真时,执行对应的语句,然后跳出整个
if - else if
结构。如果所有表达式的值都为假,则执行else
后面的语句。
- 示例
#include <stdio.h>int main() {int num = 7;if (num < 5) {printf("The number is less than 5.\n");} else if (num < 10) {printf("The number is between 5 and 9 (inclusive).\n");} else {printf("The number is 10 or greater.\n");}return 0;
}
三、switch 语句
- 基本形式
switch (表达式)
{
case 常量表达式1:
语句1;
break;
case 常量表达式2:
语句2;
break;
...
default:
语句n;
}
- 先计算表达式的值,然后将其与各个
case
后的常量表达式的值进行比较。如果相等,则执行对应的语句,直到遇到break
语句跳出switch
结构。如果没有匹配的case
,则执行default
后面的语句。
- 示例
#include <stdio.h>int main() {int day = 3;switch (day) {case 1:printf("Monday\n");break;case 2:printf("Tuesday\n");break;case 3:printf("Wednesday\n");break;case 4:printf("Thursday\n");break;case 5:printf("Friday\n");break;case 6:printf("Saturday\n");break;case 7:printf("Sunday\n");break;default:printf("Invalid day number.\n");}return 0;
}
- 注意事项
switch
表达式和case
常量表达式必须是整型或字符型。case
常量表达式的值必须互不相同。break
语句用于跳出switch
结构,如果没有break
,程序会继续执行下一个case
的语句,直到遇到break
或switch
结束。
四、分支结构的嵌套
- 分支结构可以嵌套使用,即在一个
if
语句或switch
语句中包含另一个if
语句或switch
语句。 - 示例
#include <stdio.h>int main() {int num = 7;if (num > 5) {if (num < 10) {printf("The number is between 5 and 9 (inclusive).\n");} else {printf("The number is 10 or greater.\n");}} else {printf("The number is less than or equal to 5.\n");}return 0;
}
五、条件运算符(三元运算符)
- 基本形式
表达式1 ? 表达式2 : 表达式3
- 先计算表达式 1 的值,如果为真,则整个条件表达式的值为表达式 2 的值;否则,为表达式 3 的值。
- 示例
#include <stdio.h>int main() {int num1 = 5, num2 = 3;int max = (num1 > num2) ? num1 : num2;printf("The maximum number is %d.\n", max);return 0;
}
六、分支结构的应用场景
- 数据验证:用于验证用户输入的数据是否符合特定的条件,例如判断输入的年龄是否在合理范围内,输入的密码是否符合格式要求等。
- 菜单选择:实现菜单驱动的程序,根据用户选择的菜单项执行相应的操作。
- 数学计算:根据不同的条件执行不同的数学运算,例如根据三角形的边长判断三角形的类型,并计算其面积。
- 游戏开发:在游戏中,根据角色的状态、用户的操作等条件来决定游戏的下一步动作,如角色的移动、攻击、防御等。
七、总结
C 语言的分支结构为程序提供了强大的决策能力,通过if
语句、switch
语句和条件运算符,能够根据不同的条件执行不同的代码路径,实现各种复杂的逻辑功能。在实际编程中,需要根据具体的问题需求选择合适的分支结构,并注意正确使用条件表达式和控制语句的执行流程,以确保程序的正确性和可靠性。同时,合理运用分支结构的嵌套和组合,可以构建出功能丰富、灵活多变的程序。掌握分支结构是 C 语言编程的重要基础,对于开发各种类型的应用程序都具有至关重要的作用。
八、习题
基础题
- 判断奇偶数:编写一个程序,让用户输入一个整数,然后判断这个数是奇数还是偶数,并输出相应的结果。
- 比较两个数的大小:编写程序,从用户那里获取两个整数,比较它们的大小,并输出较大的数。
- 判断是否为闰年:输入一个年份,判断该年份是否为闰年。闰年的判断规则是:能被 4 整除但不能被 100 整除,或者能被 400 整除。
进阶题
- 成绩等级划分:输入一个学生的考试成绩(0 - 100 分),根据以下规则输出对应的等级:
- 90 - 100 分:A
- 80 - 89 分:B
- 70 - 79 分:C
- 60 - 69 分:D
- 0 - 59 分:F
以上内容对 C 语言分支结构进行了较为全面的讲解,如果你还有其他具体问题或需要进一步的示例,欢迎随时留言评论。
相关文章:
C语言分支结构详解
一、引言 在 C 语言中,分支结构是程序控制流的重要组成部分。它允许程序根据不同的条件执行不同的代码块,从而实现更灵活和复杂的逻辑。分支结构使得程序能够根据输入、变量的值或其他条件来做出决策,决定程序的执行路径。 二、if 语句 基…...
Redisson实战:分布式系统中的五大典型应用场景
引言 在分布式系统架构中,数据一致性、高并发控制和资源协调是开发者面临的核心挑战。Redisson作为基于Redis的Java客户端,不仅提供了丰富的分布式对象和服务,还简化了分布式场景下的编程模型。本文将通过实际代码示例,解析Redis…...

12N60-ASEMI无人机专用功率器件12N60
编辑:LL 12N60-ASEMI无人机专用功率器件12N60 型号:12N60 品牌:ASEMI 封装:TO-220F 最大漏源电流:12A 漏源击穿电压:600V 批号:最新 RDS(ON)Max:0.68…...

长城智驾重复造轮子
左手新能源,右手智驾,这是长城当下最在意的两块业务。 从去年8月首款具备高阶智能驾驶功能SUV全新蓝山上市之后,长城在传播端的重点就是围绕智驾、无图方案打造智驾标签。 先是在广州国际车展上,整个展厅只展出全新蓝山…...
云原生之认识DDD
一、DDD是什么? 领域驱动设计(DDD) 做为一种软件工程的方法论,它可以帮助我们设计高质量的软件,或者说任何工程的设计都需要方法论,不论是城市设计、建筑设计、室内设计。 比如没有方法论的情况下楼是可以盖起来的,或许整个楼道和窗户上挂满了电话线、闭路线、电线?下水…...

continue插件实现IDEA接入本地离线部署的deepseek等大模型
文章目录 前言一、IDEA安装continue二、continue部署本地大模型三、continue聊天窗口使用deepseek R1四、continue批量接入硅基流动的模型API 前言 亲爱的家人们,创作很不容易,若对您有帮助的话,请点赞收藏加关注哦,您的关注是我…...
代码随想录算法训练营第一天:数组part1
今日学习的文章链接和视频链接 ● 自己看到题目的第一想法 ● 看完代码随想录之后的想法 ● 自己实现过程中遇到哪些困难 ● 今日收获,记录一下自己的学习时长 状态 思路理解完成 30% 代码debug完成 60% 代码模板总结并抽象出来 100% 题目 704 二分查找 题目链接…...

滚珠螺杆在数控机床中如何降低摩擦系数?
对数控机床这样要求加工精度高而且加工精度能保持长期稳定的设备来说是必须的,而且具有较低的传动阻力也同时为更高速的传动打下基础。使用滚珠螺杆,也是数控机床加工效率高的一个重要原因,为了减少数控机床的滚珠螺杆出现摩擦,可…...

【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈PyTorch深度学习 ⌋ ⌋ ⌋ 深度学习 (DL, Deep Learning) 特指基于深层神经网络模型和方法的机器学习。它是在统计机器学习、人工神经网络等算法模型基础上,结合当代大数据和大算力的发展而发展出来的。深度学习最重…...

Python实现技能记录系统
Python实现技能记录系统 来自网络,有改进。 技能记录系统界面如下: 具有保存图片和显示功能——允许用户选择图片保存,选择历史记录时若有图片可预览图片。 这个程序的数据保存在数据库skills2.db中,此数据库由用Python 自带的…...
前端基础之《Vue(10)—过滤器》
一、过滤器 1、作用 用于数据处理。 2、全局过滤器 使用Vue.filter(名称, val>{return newVal})定义。 在任何组件中都可以直接使用。 3、局部过滤器 使用选项,filters: {}定义,只能在当前组件中使用。 4、过滤器在Vue 3.0中已经淘汰了 5、过滤器…...

Linux常见指令介绍下(入门级)
1. head head就和他的名字一样,是显示一个文件头部的内容(会自动排序),默认是打印前10行。 语法:head [参数] [文件] 选项: -n [x] 显示前x行。 2. tail tail 命令从指定点开始将文件写到标准输出.使用t…...

VIC-3D非接触全场应变测量系统用于小尺寸测量之电子元器件篇—研索仪器DIC数字图像相关技术
在5G通信、新能源汽车电子、高密度集成电路快速迭代的今天,电子元件的尺寸及连接工艺已进入亚毫米级竞争阶段,这种小尺寸下的力学性能评估对测量方式的精度有更高的要求,但传统应变测量手段常因空间尺寸限制及分辨率不足难以捕捉真实形变场。…...
字典与集合——测试界的黑话宝典与BUG追捕术
主题:“字典是测试工程师的暗号手册,集合是BUG的照妖镜” 一、今日目标 ✅ 掌握字典的「键值对暗号体系」与集合的「去重妖法」✅ 开发《测试工程师黑话词典》,让新人秒变老司机✅ 统计自动化测试结果中的高频BUG类型(附赠甩锅指…...

下篇:深入剖析 BLE GATT / GAP / SMP 与应用层(约5000字)
引言 在 BLE 协议栈的最上层,GAP 定义设备角色与连接管理,GATT 构建服务与特征,SMP 负责安全保障,应用层则承载具体业务逻辑与 Profile。掌握这一层,可实现安全可靠的设备发现、配对、服务交互和定制化业务。本文将详解 GAP、GATT、SMP 三大模块,并通过示例、PlantUML 时…...
事务详细介绍
一、简介 1、什么是事务 事务是指一组操作,这些操作要么全部成功执行,要么全部不执行,保证数据的完整性和一致性。事务广泛应用于数据库管理系统、分布式系统和企业级应用中; 2、事务的特性 事务具有四个基本特性,…...
PostgreSQL 中的权限视图
PostgreSQL 中的权限视图 PostgreSQL 提供了多个系统视图来查询权限信息,虽然不像 Oracle 的 DBA_SYS_PRIVS 那样集中在一个视图中,但可以通过组合以下视图获取完整的系统权限信息。 一 主要权限相关视图 Oracle 视图PostgreSQL 对应视图描述DBA_SYS_…...
Python-36:饭馆菜品选择问题
问题描述 小C来到了一家饭馆,这里共有 nn 道菜,第 ii 道菜的价格为 a_i。其中一些菜中含有蘑菇,s_i 代表第 ii 道菜是否含有蘑菇。如果 s_i 1,那么第 ii 道菜含有蘑菇,否则没有。 小C希望点 kk 道菜,且希…...

27、Session有什么重⼤BUG?微软提出了什么⽅法加以解决?
Session的重大BUG 1、进程回收导致Session丢失 原理: IIS的进程回收机制会在系统繁忙、达到特定内存阈值等情况下,自动回收工作进程(w3wp.exe)。由于Session数据默认存储在进程内存中,进程回收时这些数据会被清除。 …...
图论---Bellman-Ford算法
适用场景:有边数限制 ->(有负环也就没影响了),存在负权边,O( n * m ); 有负权回路时有的点距离会是负无穷,因此最短路存在的话就说明没有负权回路。 从1号点经过不超过k条边到每个点的距离…...
复杂性决策-思维训练
思维训练 1.模式识别 观察、复杂、不确定、波动、模糊 –找出必要和非必要因素 –识别重大威胁和机遇 2.系统分析 为复杂情景构建系统心智模型 利用模型识别模式做出预测,指定有效策略 3.心智敏锐度 利用不同层次的分析探索挑战的能力,对其他利益相关方在…...

云智融合普惠大模型AI,政务服务重构数智化路径
2025年是“十四五”收官之年,数字政府和政务数智化作为“数字中国”建设的重点,已经取得了显著成效。根据《联合国电子政务调查报告2024》,我国电子政务发展指数全球排名第35位,与2022年相比提升8个名次;其中ÿ…...
反爬系列 IP 限制与频率封禁应对指南
在数据采集领域,IP 限制与频率封禁是反爬机制中最常见的防御手段。随着网站安全策略的升级,单靠传统爬虫技术已难以应对高强度的检测。本文将从反爬机制解析、实战应对策略两个维度,系统讲解如何突破 IP 限制与频率封禁。 一、反爬机制解析 …...
Redis Cluster 使用 CRC16 算法实现 Slot 槽位分片的核心细节
一、CRC16 算法作用原理 哈希计算流程 对键值(Key)执行 CRC16 算法,生成 16 位校验值(0~65535)。 将校验值 对 16384 取模(公式:slot CRC16(key) % 16384),…...
Java基础集合 面试经典八股总结 [连载ing]
序言 八股,怎么说呢。我之前系统学习的内容,进行梳理。通过问题的方式,表达出得当的内容,这件事本身就很难。面试时心态、状态、掌握知识的情况等。关于八股文,我不想有太多死记硬背的内容,更多的是希望自我…...
如何将极狐GitLab 议题导出为 CSV?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 导出议题到 CSV (BASIC ALL) 您可以将问题从极狐GitLab 导出为 CSV 文件,这些文件将作为附件发送到您的默认通知…...

UE5 调整字体、界面大小
文章目录 方案一 5.4 版本及以上(推荐)方案二 5.3 版本及以下(推荐)方案三 使用插件(不推荐) 方案一 5.4 版本及以上(推荐) 进入 编辑 > 编辑器偏好设置,如下图所示&…...
Android Cordova 开发 - Cordova 快速入门(Cordova 环境配置、Cordova 第一个应用程序)
一、Cordova 1、Cordova 概述 Cordova 是使用 HTML,CSS 和 JavaScript 构建混合移动应用程序的平台 2、Cordova 特征 (1)命令行界面(Cordova CLI) 这是可用于启动项目,构建不同平台的进程,…...
Docker Compose 和 Kubernetes(k8s)区别
前言:Docker Compose 和 Kubernetes(k8s)是容器化技术中两个常用的工具,但它们的定位、功能和适用场景有显著区别。以下是两者的核心对比: 1. 定位与目标 特性 Docker Compose Kubernet…...

抽象类相关
抽象类的定义 抽象类 是一种特殊的类,它不能被实例化,只能作为基类来派生出具体类。抽象类至少包含一个纯虚函数 。纯虚函数是在函数原型前加上 0 的虚函数,表示该函数没有具体实现,必须由派生类来实现。 抽象类的作用 提供统…...