C语言分支结构详解

news2025/4/25 13:33:22

一、引言

在 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的语句,直到遇到breakswitch结束。

四、分支结构的嵌套

  • 分支结构可以嵌套使用,即在一个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 语言编程的重要基础,对于开发各种类型的应用程序都具有至关重要的作用。

八、习题

基础题

  1. 判断奇偶数:编写一个程序,让用户输入一个整数,然后判断这个数是奇数还是偶数,并输出相应的结果。
  2. 比较两个数的大小:编写程序,从用户那里获取两个整数,比较它们的大小,并输出较大的数。
  3. 判断是否为闰年:输入一个年份,判断该年份是否为闰年。闰年的判断规则是:能被 4 整除但不能被 100 整除,或者能被 400 整除。

进阶题

  1. 成绩等级划分:输入一个学生的考试成绩(0 - 100 分),根据以下规则输出对应的等级:
    • 90 - 100 分:A
    • 80 - 89 分:B
    • 70 - 79 分:C
    • 60 - 69 分:D
    • 0 - 59 分:F

以上内容对 C 语言分支结构进行了较为全面的讲解,如果你还有其他具体问题或需要进一步的示例,欢迎随时留言评论。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2342459.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

12N60-ASEMI无人机专用功率器件12N60

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

长城智驾重复造轮子

左手新能源&#xff0c;右手智驾&#xff0c;这是长城当下最在意的两块业务。 从去年8月首款具备高阶智能驾驶功能SUV全新蓝山上市之后&#xff0c;长城在传播端的重点就是围绕智驾、无图方案打造智驾标签。 先是在广州国际车展上&#xff0c;整个展厅只展出全新蓝山&#xf…

continue插件实现IDEA接入本地离线部署的deepseek等大模型

文章目录 前言一、IDEA安装continue二、continue部署本地大模型三、continue聊天窗口使用deepseek R1四、continue批量接入硅基流动的模型API 前言 亲爱的家人们&#xff0c;创作很不容易&#xff0c;若对您有帮助的话&#xff0c;请点赞收藏加关注哦&#xff0c;您的关注是我…

滚珠螺杆在数控机床中如何降低摩擦系数?

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

【现代深度学习技术】循环神经网络05:循环神经网络的从零开始实现

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

Python实现技能记录系统

Python实现技能记录系统 来自网络&#xff0c;有改进。 技能记录系统界面如下&#xff1a; 具有保存图片和显示功能——允许用户选择图片保存&#xff0c;选择历史记录时若有图片可预览图片。 这个程序的数据保存在数据库skills2.db中&#xff0c;此数据库由用Python 自带的…

Linux常见指令介绍下(入门级)

1. head head就和他的名字一样&#xff0c;是显示一个文件头部的内容&#xff08;会自动排序&#xff09;&#xff0c;默认是打印前10行。 语法&#xff1a;head [参数] [文件] 选项&#xff1a; -n [x] 显示前x行。 2. tail tail 命令从指定点开始将文件写到标准输出.使用t…

VIC-3D非接触全场应变测量系统用于小尺寸测量之电子元器件篇—研索仪器DIC数字图像相关技术

在5G通信、新能源汽车电子、高密度集成电路快速迭代的今天&#xff0c;电子元件的尺寸及连接工艺已进入亚毫米级竞争阶段&#xff0c;这种小尺寸下的力学性能评估对测量方式的精度有更高的要求&#xff0c;但传统应变测量手段常因空间尺寸限制及分辨率不足难以捕捉真实形变场。…

下篇:深入剖析 BLE GATT / GAP / SMP 与应用层(约5000字)

引言 在 BLE 协议栈的最上层,GAP 定义设备角色与连接管理,GATT 构建服务与特征,SMP 负责安全保障,应用层则承载具体业务逻辑与 Profile。掌握这一层,可实现安全可靠的设备发现、配对、服务交互和定制化业务。本文将详解 GAP、GATT、SMP 三大模块,并通过示例、PlantUML 时…

27、Session有什么重⼤BUG?微软提出了什么⽅法加以解决?

Session的重大BUG 1、进程回收导致Session丢失 原理&#xff1a; IIS的进程回收机制会在系统繁忙、达到特定内存阈值等情况下&#xff0c;自动回收工作进程&#xff08;w3wp.exe&#xff09;。由于Session数据默认存储在进程内存中&#xff0c;进程回收时这些数据会被清除。 …

云智融合普惠大模型AI,政务服务重构数智化路径

2025年是“十四五”收官之年&#xff0c;数字政府和政务数智化作为“数字中国”建设的重点&#xff0c;已经取得了显著成效。根据《联合国电子政务调查报告2024》&#xff0c;我国电子政务发展指数全球排名第35位&#xff0c;与2022年相比提升8个名次&#xff1b;其中&#xff…

UE5 调整字体、界面大小

文章目录 方案一 5.4 版本及以上&#xff08;推荐&#xff09;方案二 5.3 版本及以下&#xff08;推荐&#xff09;方案三 使用插件&#xff08;不推荐&#xff09; 方案一 5.4 版本及以上&#xff08;推荐&#xff09; 进入 编辑 > 编辑器偏好设置&#xff0c;如下图所示&…

抽象类相关

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

【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建

本文章同步到我的个人博客网站&#xff1a;ElemenX-King&#xff1a;【UVM项目实战】异步fifo—uvm项目结构以及uvm环境搭建 希望大家能使用此网站来进行浏览效果更佳&#xff01;&#xff01;&#xff01; 目录 一、异步FIFO1.1 异步FIFO的定义1.2 亚稳态1.3 异步FIFO关键技术…

【通关函数的递归】--递归思想的形成与应用

目录 一.递归的概念与思想 1.定义 2.递归的思想 3.递归的限制条件 二.递归举例 1.求n的阶乘 2.顺序打印一个整数的每一位 三.递归与迭代 前言:上篇博文分享了扫雷游戏的实现&#xff0c;这篇文章将会继续分享函数的递归相关知识点&#xff0c;让大家了解并掌握递归的思…

【FAQ】针对于消费级NVIDIA GPU的说明

概述 本文概述 HP Anyware 在配备消费级 NVIDIA GPU 的物理工作站上的关​​键组件、安装说明和重要注意事项。 注意&#xff1a;本文档适用于 NVIDIA 消费级 GPU。NVIDIA Quadro 和 Tesla GPU 也支持 HP Anyware 在公有云、虚拟化或物理工作站环境中运行。请参阅PCoIP Graphi…

MyBatis操作数据库---从入门到理解

文章目录 关于MyBatis操作数据库MyBatis⼊⻔&#xff08;使用&#xff09;Mybatis操作数据库的步骤&#xff1a;配置数据库连接字符串使⽤MyBatis完成简单的增删改查操作注解xml 单元测试开启驼峰命名(推荐) 打印日志 关于MyBatis操作数据库 在之前的学习,我们了解到web应⽤程…

【HFP】蓝牙语音通话控制深度解析:来电拒接与通话终止协议

目录 一、来电拒接的核心流程与信令交互 1.1 拒接场景的分类与触发条件 1.2 HF 端拒接流程 1.3 AG 端拒接流程 二、通话终止流程&#xff1a;主动断开与异常中断 2.1 终止场景的界定 2.2 HF 端终止流程 2.3 AG 端终止流程 三、信令协议的核心要素&#xff1a;AT 命令与…

使用QML Tumbler 实现时间日期选择器

目录 引言相关阅读项目结构示例实现与代码解析示例一&#xff1a;时间选择器&#xff08;TimePicker&#xff09;示例二&#xff1a;日期时间选择器&#xff08;DateTimePicker&#xff09; 主窗口整合运行效果总结下载链接 引言 在现代应用程序开发中&#xff0c;时间与日期选…

智能吸顶灯/摄影补光灯专用!FP7195双通道LED驱动,高效节能省空间 !

一、双路调光技术背景与市场需求 随着LED照明技术的快速发展和智能照明需求的激增&#xff0c;双路调光技术正成为照明行业的重要发展方向。传统单路调光方案只能实现整体亮度的统一调节&#xff0c;而双路调光则能够实现对两个独立通道的精确控制。今天&#xff0c;由我来为大…