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

C语言分支结构全解——让程序学会“做选择”

前言在C语言的学习中分支结构是程序逻辑的“决策核心”是从“写简单打印语句”到“写有逻辑的程序”的第一个关键转折点。本文结合课堂笔记系统梳理C语言分支结构的所有语法、细节、避坑点与经典案例帮你彻底吃透if、switch语句掌握条件判断的核心逻辑为后续循环、数组、项目开发打下坚实基础。一、C语言程序的三大结构铺垫C语言的程序执行逻辑本质上由三种基础结构构成分支结构是其中的核心之一1. 顺序结构代码按书写顺序从上到下逐行执行最基础的默认结构2. 分支结构根据条件判断选择执行不同的代码块核心if、switch3. 循环结构满足条件时重复执行某段代码后续下篇详细讲解分支结构就像程序的“大脑”让代码不再是机械的顺序执行而是能根据不同条件做出不同选择实现复杂的业务逻辑比如年龄判断、闰年判断等。二、if语句最常用的条件判断核心if语句是C语言中最灵活、最常用的分支语句适用于各种条件判断场景分为三种标准形式覆盖从“单选择”到“多选择”的所有需求。2.1 三种语法形式必掌握// 形式1单分支满足条件就执行不满足就跳过 if (表达式) { 语句; // 条件为真时执行 } // 形式2双分支二选一非此即彼 if (表达式) { 语句1; // 条件为真时执行 } else { 语句2; // 条件为假时执行 } // 形式3多分支多选一匹配多个条件 if (表达式1) { 语句1; // 表达式1为真执行 } else if (表达式2) { 语句2; // 表达式2为真执行 } else if (表达式3) { 语句3; // 表达式3为真执行 } ... else { 语句n; // 所有条件都不满足时执行可选推荐加上 }2.2 核心规则与新手避坑1. 判断核心if后面括号内的“表达式”结果非0为“真”执行对应代码0为“假”跳过对应代码。2. 致命坑1if后面不要随意加“;”比如if(age 18);分号会直接结束if判断后面的{}代码块会无条件执行与条件无关。3. 致命坑2代码缩进不代表逻辑配对必须用{}明确代码块范围哪怕只有一行代码。2.3 经典案例实操落地案例1双分支——年龄判断成年/未成年#include stdio.h int main() { int age 0; scanf(%d, age); // 输入年龄 if (age 18) { printf(成年了可以独立编程啦\n); } else { printf(未成年先打好基础哦\n); } return 0; }案例2多分支——年龄分段少年/青年/中年/老年#include stdio.h int main() { int age 0; scanf(%d, age); if (age 18) printf(少年\n); else if (age 45) printf(青年\n); else if (age 60) printf(中年\n); else printf(老年\n); return 0; }2.4 if嵌套与悬空else问题高频易错点当多个if和else嵌套时C语言有一个铁律else永远和离它最近的、未匹配的if配对和代码缩进无关这就是“悬空else”问题新手很容易踩坑。错误示范缩进误导// 看似else匹配第一个if实际匹配第二个if if (a 1) if (b 2) printf(hehe\n); else printf(haha\n);正确写法用{}明确配对关系if (a 1) { if (b 2) { printf(hehe\n); } } else { printf(haha\n); }最佳实践无论if/else内只有一行还是多行代码都永远加上{}彻底避免悬空else同时提升代码可读性。三、关系运算符if的“判断工具”必记if语句的核心是“条件判断”而条件判断依赖C语言的6种关系运算符用于比较两个值的大小关系。运算符含义示例说明大于a ba大于b时结果为真小于a ba小于b时结果为真大于等于age 18age大于或等于18时结果为真小于等于i 100i小于或等于100时结果为真等于num % 2 0num是偶数时结果为真重点区分!不等于age ! 0age不为0时结果为真核心避坑点1. 区分“”和“”“”是赋值运算符给变量赋值“”是关系运算符判断两个值是否相等。错误if(a 5)—— 把5赋值给a表达式永远为真非0逻辑错误。正确if(a 5)—— 判断a是否等于5符合需求。2. 避免连续判断不要写18 age 30C语言会先计算18 age结果为0或1再用0/1和30比较永远为真正确写法age 18 age 30用逻辑与组合条件。四、逻辑运算符多条件组合判断进阶当需要同时满足多个条件或满足多个条件中的一个时就需要用逻辑运算符组合关系表达式实现复杂判断。C语言有3种核心逻辑运算符重点掌握“短路特性”。运算符含义核心规则示例逻辑与两边都为真结果才为真左边为假右边不执行短路age 18 age 30||逻辑或只要一边为真结果就为真左边为真右边不执行短路year % 4 0 || year % 100 ! 0!逻辑非真变假假变真单目运算符只作用于一个表达式!(a b)a不大于b时为真经典案例闰年判断逻辑运算符实战闰年规则能被4整除且不能被100整除或能被400整除。用逻辑运算符组合条件完美实现判断#include stdio.h int main() { int year 0; scanf(%d, year); // 核心判断条件 if ((year % 4 0 year % 100 ! 0) || (year % 400 0)) { printf(%d是闰年\n, year); } else { printf(%d不是闰年\n, year); } return 0; }重点理解括号的作用是改变运算优先级确保“能被4整除且不能被100整除”作为一个整体再和“能被400整除”进行逻辑或判断。五、switch语句多分支选择的“简化版”当判断条件是“固定的整型值”比如1-7对应星期、0-1对应菜单选择时用switch语句比if-else多分支更简洁、可读性更高核心是“匹配常量、跳出分支”。5.1 语法结构必记switch (表达式) // 表达式必须是整型int、char等不能是float、double { case 常量1: // case后面必须是常量不能是变量 语句1; break; // 跳出switch避免case贯穿核心 case 常量2: 语句2; break; ... default: // 所有case都不匹配时执行可选推荐加上 语句n; break; }5.2 核心规则与避坑点1. 表达式要求必须是整型int、char、short等不能是浮点型比如switch(3.14)会编译报错。2. case要求case后面必须是“常量”比如1、2、a不能是变量比如case i:会报错。3. break的作用跳出当前switch语句没有break会“贯穿执行”执行完当前case后继续执行下一个case直到遇到break或switch结束。4. default的作用处理“所有case都不匹配”的异常情况比如输入错误的数字推荐加上提升程序健壮性。5.3 经典案例输入1-7打印对应星期#include stdio.h int main() { int day 0; printf(请输入1-7的数字); scanf(%d, day); switch(day) { 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(输入错误请输入1-7的数字\n); break; } return 0; }六、上篇总结与下篇预告上篇核心回顾1. 分支结构是程序的“决策核心”核心语句是if和switch配合关系、逻辑运算符实现条件判断。2. if语句灵活适合各种条件判断重点避免“多加分号”“悬空else”“和混淆”三个坑。3. switch语句适合“固定整型多分支”重点记住“case用常量、必须加break、推荐加default”。4. 关系运算符用于比较大小逻辑运算符用于组合多条件掌握短路特性可提升代码效率。下篇预告下篇将讲解C语言的循环结构包括while、for、do while三种循环的语法、对比、循环控制语句break/continue以及分支循环的综合实战项目猜数字游戏帮你彻底吃透程序的“重复执行”逻辑。写在最后本文完全基于课堂笔记整理覆盖分支结构所有知识点适合零基础学习者系统学习也适合有基础的同学查漏补缺。如果有任何问题欢迎在评论区交流~

相关文章:

C语言分支结构全解——让程序学会“做选择”

前言在C语言的学习中,分支结构是程序逻辑的“决策核心”,是从“写简单打印语句”到“写有逻辑的程序”的第一个关键转折点。本文结合课堂笔记,系统梳理C语言分支结构的所有语法、细节、避坑点与经典案例,帮你彻底吃透if、switch语…...

Morris中序遍历二叉树小结

关键词:前驱结点predecessor,线索原理:中序遍历遍历二叉树有递归和迭代两种写法,这两种写法都需要O(n)的空间复杂度,都需要O(n)的栈来辅助算法的实现。但是Morris中序遍历只有O(n)的空间复杂度,不需要额外的…...

八股面经——Web测试中的业务测试

1、Web测试与APP测试、桌面应用测试的主要区别是什么?答:主要区别在于技术架构、测试重点和环境技术架构:Web测试基于B/S架构,核心是浏览器和服务器APP测试基于C/S架构,核心是客户端和服务器桌面应用测试直接运行操作系…...

如何解决ORA-12518监听程序无法分配进程_内存耗尽与PGA溢出

ORA-12518错误本质是PGA内存耗尽,非监听器故障;需查v$pgastat和v$process定位高消耗进程,可临时调高pga_aggregate_target或杀 rogue 进程,长期应启用连接池并避免隐式PGA泄漏。ORA-12518 错误本质是 PGA 不够用,不是监…...

Tomcat后台权限详解与实战:从manager-gui到JMX,不同角色如何影响你的安全防线

Tomcat后台权限深度解析:从角色配置到安全加固实战指南 1. Tomcat权限模型的核心架构 在Apache Tomcat的权限体系中,/conf/tomcat-users.xml文件扮演着神经中枢的角色。这个看似简单的XML配置文件实际上定义了整个容器的访问控制矩阵。与常见的RBAC&am…...

开源数字孪生平台OpenTwins:5步打造你的工业物联网可视化系统

开源数字孪生平台OpenTwins:5步打造你的工业物联网可视化系统 【免费下载链接】opentwins Innovative open-source platform that specializes in developing next-gen compositional digital twins 项目地址: https://gitcode.com/gh_mirrors/op/opentwins …...

内联函数(inline)的内存原理 --- 拓展普通函数和宏的对比

1&#xff0c;普通函数调用流程&#xff08;栈的使用&#xff09;假设有一个普通函数&#xff1a;void Print() { int x 10; std::cout << x; }int main() { Print(); }调用过程&#xff08;CPU 和栈视角&#xff09;&#xff1a;调用 Print()CPU 执行 call Print当前栈…...

Bearer Token在现代Web API中的安全实践与优化策略

1. Bearer Token的核心原理与安全基础 Bearer Token本质上是一串随机生成的字符&#xff0c;它就像一把万能钥匙——谁持有它&#xff0c;谁就能打开对应的资源大门。这种设计在OAuth 2.0框架下尤为常见&#xff0c;我见过太多开发者因为对这把"钥匙"的保护不当而引…...

LiuJuan Z-Image Generator应用场景:自媒体团队日更30+张原创配图工作流

LiuJuan Z-Image Generator应用场景&#xff1a;自媒体团队日更30张原创配图工作流 1. 引言&#xff1a;当内容创作遇上效率瓶颈 想象一下&#xff0c;你是一个自媒体团队的负责人。每天&#xff0c;你和你的团队需要为公众号文章、小红书笔记、抖音视频准备配图。这些图片不…...

解锁音乐自由:ncmdumpGUI——Windows平台NCM加密文件一键转换利器

解锁音乐自由&#xff1a;ncmdumpGUI——Windows平台NCM加密文件一键转换利器 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI ncmdumpGUI是一款专为Windows用户…...

如何高效解决魔兽争霸3兼容性问题:专业玩家的终极指南

如何高效解决魔兽争霸3兼容性问题&#xff1a;专业玩家的终极指南 【免费下载链接】WarcraftHelper Warcraft III Helper , support 1.20e, 1.24e, 1.26a, 1.27a, 1.27b 项目地址: https://gitcode.com/gh_mirrors/wa/WarcraftHelper 还在为经典游戏魔兽争霸3在Windows …...

浏览器返回键总遭“劫持”,Google重拳出击:6月15日起,将认定为违规!

整理 | 屠敏出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09;经常用浏览器的人&#xff0c;大概都踩过这个坑&#xff1a;一不小心点进某个页面&#xff0c;想返回上一页&#xff0c;却发现“后退按钮”突然失灵了。怎么点都回不去&#xff0c;要么只是原地刷新&…...

玩AI要想不伤身,就得加大多巴胺阻。

4月12日&#xff0c;外媒报道&#xff0c;“OpenAI”执行长Sam Altman住处遭袭后续。嫌犯被捕后供称想“杀死”他&#xff0c;以阻止AI发展、避免人类灭绝。俗话说&#xff0c;物极必反。信息越是通畅无阻&#xff0c;你的思维钻头就越吃不上劲儿&#xff0c;无处使劲儿&#x…...

ANIMATEDIFF PRO保姆级教程:手把手教你用文字生成电影感视频

ANIMATEDIFF PRO保姆级教程&#xff1a;手把手教你用文字生成电影感视频 1. 前言&#xff1a;开启你的AI电影创作之旅 想象一下&#xff0c;你只需要输入一段文字描述&#xff0c;就能获得一段具有电影质感的动态视频。这不是科幻电影的情节&#xff0c;而是ANIMATEDIFF PRO带…...

Qwen3.5-2B边缘部署案例:在Jetson Nano/树莓派上运行多模态AI的完整步骤

Qwen3.5-2B边缘部署案例&#xff1a;在Jetson Nano/树莓派上运行多模态AI的完整步骤 1. 引言&#xff1a;轻量级多模态AI新选择 Qwen3.5-2B作为Qwen3.5系列的小参数版本&#xff08;20亿参数&#xff09;&#xff0c;专为边缘计算设备优化设计。这个轻量化多模态基础模型在保…...

手把手教你用像素时装锻造坊:复古界面+Stable Diffusion,轻松玩转AI时装设计

手把手教你用像素时装锻造坊&#xff1a;复古界面Stable Diffusion&#xff0c;轻松玩转AI时装设计 1. 当AI时装设计遇上复古RPG 想象一下这样的场景&#xff1a;你坐在像素风格的工坊里&#xff0c;面前是一台闪着蓝光的锻造机。选择一款皮衣模板&#xff0c;输入几个关键词…...

高效跨平台小说下载器:一站式数字阅读管理完整方案

高效跨平台小说下载器&#xff1a;一站式数字阅读管理完整方案 【免费下载链接】Tomato-Novel-Downloader 番茄小说下载器不精简版 项目地址: https://gitcode.com/gh_mirrors/to/Tomato-Novel-Downloader Tomato-Novel-Downloader是一款基于Rust开发的智能跨平台小说下…...

腾讯开源 | 蒸馏结合可学习缓存:腾讯混元视频生成加速新探索

来自腾讯混元的全新AIGC视频生成加速方案--(Distillation-CompatibleLearnableFeatureCaching)DisCa正式开源&#xff0c;作为学界和业界首次对基于可学习的特征缓存技术进一步加速蒸馏后少步模型的这一方向的尝试&#xff0c;该工作现已被CVPR2026接收。TL;DR速览:DisCa主要聚…...

杭州师范大学生命科学学院2026考研复试资料包(电子版)|真齐全+高频考点全覆盖

温馨提示&#xff1a;文末有联系方式 杭师大生命科学学院2026考研复试专属资料包 本资料包专为报考杭州师范大学生命科学学院2026级硕士研究生的考生精心整理&#xff0c;全程电子化&#xff0c;内容系统全面&#xff0c;直击复试核心环节。 2025年杭师大生科院复试笔试真&am…...

重庆科技大学安全工程考研复试专用资料|涵盖安全系统工程、风险工程学等核心科目

温馨提示&#xff1a;文末有联系方式一、权威覆盖&#xff1a;重庆科技大学安全工程复试核心课程资料 本套资料深度聚焦重庆科技大学安全工程专业研究生复试要求&#xff0c;系统整合《安全系统工程》《风险工程学》等关键专业课内容&#xff0c;紧扣近年复试命趋势与学科重点&…...

【Java】类与对象的本质:从底层逻辑到面试实战

【Java】类与对象的本质&#xff1a;从底层逻辑到面试实战类与对象的本质——语言根基&#xff08;三&#xff09;一、从内存视角看“类”和“对象”1.1 类&#xff1a;一段只读的蓝图代码1.2 对象&#xff1a;一块可写的堆内存二、底层机制2.1 方法调用如何完成2.2 this 指针的…...

别等客户投诉才升级!2026奇点大会AI客服机器人5级成熟度模型来了:你的系统卡在L2还是已突破L4自治阈值?

第一章&#xff1a;2026奇点智能技术大会&#xff1a;AI客服机器人 2026奇点智能技术大会(https://ml-summit.org) 本届大会首次将AI客服机器人列为“可部署级智能体”核心示范场景&#xff0c;聚焦多模态意图理解、实时语义纠偏与跨平台服务编排三大突破。现场演示的OpenSer…...

直播预告 | 密歇根州立大学刘思佳教授:从机器遗忘到更广泛的模型调控

PaperWeekly 星弧 STARC 科研觉醒AI前沿讲座 直播主题 从机器遗忘到更广泛的模型调控 直播嘉宾 刘思佳密歇根州立大学杰出副教授MIT-IBM Watson AI Lab客座教授 直播时间 2026年4月18日&#xff08;周六&#xff09;10:00-11:00 参会方式 腾讯会议/VooV ID: 721-062-543 报告介…...

AI逆向|使用AI反编译反混淆练习平台第18题jsvmp

关注它&#xff0c;不迷路。本文章中所有内容仅供学习交流&#xff0c;不可用于任何商业用途和非法用途&#xff0c;否则后果自负&#xff0c;如有侵权&#xff0c;请联系作者立即删除&#xff01;一.题目地址https://match.yuanrenxue.cn/match/18二.抓包分析先打开控制台&…...

3DGS项目复现:从COLMAP稀疏重建到高斯模型训练全流程拆解

1. 3DGS项目复现概述 3D Gaussian Splatting&#xff08;3DGS&#xff09;是近年来计算机视觉领域的一项突破性技术&#xff0c;它通过将3D场景表示为大量可学习的高斯分布来实现高质量的视图合成。与传统的NeRF方法相比&#xff0c;3DGS在渲染速度、内存效率和场景细节保留方面…...

网易股权曝光:丁磊持股45.5% 身价2228亿 一年获股息超50亿

雷递网 雷建平 4月15日网易今日发布20-F文件&#xff0c;文件显示&#xff0c;网易董事、CEO为丁磊&#xff0c;独立董事分别为郑玉芬、唐徽、唐子期、陈觉忠、梁民杰&#xff0c;总法律顾问为Paul W. Boltz, Jr&#xff0c;财务副总裁为莫斌。截至2026年2月28日&#xff0c;丁…...

从零构建ROS机器人行为树:Groot可视化调试实战指南

1. 为什么需要行为树与Groot&#xff1f; 想象一下你在指挥一支机器人小队执行巡逻任务。如果只用传统代码写逻辑&#xff0c;可能会变成一堆复杂的if-else嵌套&#xff0c;就像用文字描述"如果看到敌人就攻击&#xff0c;否则检查A点&#xff0c;如果距离A点小于0.5米就…...

前端测试体系

前端测试体系&#xff1a;构建高质量Web应用的基石 在当今快速迭代的Web开发领域&#xff0c;前端测试已成为保障产品质量的关键环节。随着单页应用&#xff08;SPA&#xff09;和复杂交互场景的普及&#xff0c;前端代码的逻辑复杂度显著提升&#xff0c;仅靠人工测试已难以覆…...

手把手教你用SiameseAOE:中文文本情感抽取实战

手把手教你用SiameseAOE&#xff1a;中文文本情感抽取实战 1. 认识SiameseAOE模型 1.1 什么是属性观点抽取 想象一下&#xff0c;你面前有1000条用户对某款手机的评论&#xff0c;如何快速找出用户对"摄像头"、"电池"、"屏幕"等各个方面的评价…...

浦语灵笔2.5-7B开源可部署:魔搭社区ModelScope模型一键拉取

浦语灵笔2.5-7B开源可部署&#xff1a;魔搭社区ModelScope模型一键拉取 1. 模型概述与核心价值 浦语灵笔2.5-7B是上海人工智能实验室开发的多模态视觉语言大模型&#xff0c;基于InternLM2-7B架构&#xff0c;融合了CLIP ViT-L/14视觉编码器。这个模型能够同时理解图片和文字…...