C语言分支与循环
前言本人的技术笔记会优先发布在个人站点longyxblg.cnC语言是结构化的程序设计语言结构指顺序结构、选择结构、循环结构。分支语句if语法格式if(表达式)语句C语言中非0为真0为假。intnum0;scanf(%d,num);if(num%21)print(%d 是奇数\n,num);return0;else判断是与不是的情况if(表达式)语句1else语句2intnum0;scanf(%d,num);if(num%21)printf(%d 是奇数\n,num);elseprintf(%d 是偶数\n,num);分支中包含多条语句C语言中默认 if 和 else 后只跟一条语句想跟多条需要使用 {} 。intage0;scanf(%d,age);if(age18){printf(你已经成年了\n);printf(可以去上网了\n);}else{printf(你是个儿童\n);printf(不能去上网\n);}if 嵌套在 if…else 语句中, else 可以与另一个 if 语句连用构成多重判断。intnum0;scanf(%d,num);if(num0)printf(%d 是正数\n,num);elseif(num0)printf(%d 是负数\n,num);elseprintf(%d 是零\n,num);return0;intnum0;scanf(%d,num);if(num0){if(num%21)printf(%d 是正奇数\n,num);elseprintf(%d 是正偶数\n,num);}else{printf(%d 是非正数\n,num);}else 的悬空问题else 总是与最接近的 if 匹配inta0;intb2;if(a1)if(b2)printf(hehe\n);elseprintf(haha\n);这里 else 与 是与 if(b 2) 匹配 所以结果是什么代码运行结果是什么都没有。如果想要 else 与 if (a 1) 相匹配可以使用{}。inta0;intb2;if(a1){if(b2)printf(hehe\n);}elseprintf(haha\n);关系操作符C语言中用于比较的表达式成为关系表达式使用的运算符就称为关系运算符。主要有以下六个// 大于运算符// 小于运算符// 大于等于运算符// 小于等于运算符// 等于运算符!// 不等运算符关系表达式通常返回的是 0 或 1。需要注意的是关系运算符不宜连用。intnum0;if(18num20){printf(haha\n);}在上述代码中执行逻辑是先判断 18 0 返回为 0然后再比较 0 20 为真所以执行了语句。正确写法应使用逻辑运算符在后文中会说明。条件操作符也叫三目操作符需要三个操作数形式如下exp1?exp2 exp3计算逻辑如图inta0;intb0;scanf(%d,a);ba5?3:-3;printf(%d\n,b);逻辑操作符逻辑操作符提供逻辑判断功能。主要如下!:逻辑取反(改变单个表达式的真假):逻辑与两侧表达式都为真则为真否则为假||:逻辑或两侧表达式有一个是真则为真否则为假! 逻辑取反intflag0;if(!flag){printf(do something\n);} 逻辑与inta0;intb0;scanf(%d%d,a,b);if(a0b0){printf(a和b都是正数\n);}|| 逻辑或inta0;intb0;scanf(%d%d,a,b);if(a0||b0){printf(a和b至少有一个是正数\n);}短路C语言逻辑运算符总是对左侧的表达式求值再对右侧的表达式求值。如果左侧表达式满足逻辑运算符的条件则不再对右侧表达式求值这种现象称为短路。inta0;intb1;if(a1b){printf(hehe\n);}printf(%d\n,b);这里可以看到 b 的值还是1 说明发生了短路b 没有执行。像这种仅仅根据左操作数的结果就能知道整个表达式的结果不再对右操作数进行计算的运算称为短路求值。switch 语句C语言还提供了 switch 来实现分支结构。switch 语句 是一种特殊形式 if…else 语句。用于判断条件有多个结果的情况。switch(expression){casevalue1:statementcasevalue2:statementdefault:statement}根据表达式 expression 表达式的值来执行不同的 case 分支。如果没找到对应值执行 defaultt 分支。switch 后的 expression 必须是整型表达式。case 后的值必须是整型表达常量。if 语句和 switch 语句的对比intn0;scanf(%d,n);if(n%30)printf(整除余数为0\n);elseif(n%31)printf(余数是1\n);else{printf(余数是2\n);}intn0;scanf(%d,n);switch(n%3){case0:printf(整除余数为0\n);break;case1:printf(余数是1\n);break;case2:printf(余数是2\n);break;}case 和后边的数字之间必须有空格。case 语句的代码后加上 break 才能跳出这个 switch 语句。 否则会出现穿透现象。switch 语句中的穿透现象intn0;scanf(%d,n);switch(n%3){case0:printf(整除余数为0\n);case1:printf(余数是1\n);case2:printf(余数是2\n);}某一个 case 后没有跟 break 代码就会继续往下执行。直到遇到其他 case 中的break 或 switch 语句结束。switch 语句中的 default当 switch 后边的 expression 中的结果与任意 case 中的值都不匹配的时候就会默认执行 default 后的语句。switch 语句中 case 和 defaultC语言中并没有硬性规定 case 和 default 的顺序通常写法是将 default 放在最后。while 循环语法格式while(表达式)语句执行流程如图首先执行判断表达式表达式值为0。循环结束不为0则执行循环语句语句执行完再重复上述过程。while 循环示例//输入一个整数逆序打印他intnum0;scanf(%d,num);while(num){printf(%d,num%10);num/10;}for 循环语法格式for(表达式1;表达式2;表达式3)语句表达式1 用于循环变量的初始化表达式2 用于循环结束的条件判断表达式3 用于循环变量的调整。执行流程如图for 循环示例// for循环打印1-10inti0;for(i1;i10;i){printf(%d\n,i);}do-while 循环语法格式do语句while(表达式);do-while 是先进入循环体执行一次语句再进行判断是否进行循环。执行流程如下do-while 中循环体至少执行一次。示例如下:// do-while循环打印1-10intnum1;do{printf(%d\n,num);num;}while(num10);return0;break 和 continue 语句C语言中提供了 break 和 continue 两个关键字。在循环中,break 的作用是永久终止该循环。continue 是跳过本次循环位于 continue 之后的代码。break 示例inti1;while(i10){if(i5)break;printf(%d ,i);ii1;}在 i 的值为 5 时break 执行永久终止了这个循环。continue 举例inti1;while(i10){if(i5)continue;printf(%d ,i);ii1;}当 i 等于 5 后就执行 continue直接跳过 continue后的代码去循环的判断的地方。因为里跳过了i i1所以i一直为5程序陷入和死循环。goto 语句C语言提供了 goto 语句 和 跳转标号可以实现在同一个函数内跳转到设置好的标号处。// goto语句的使用inti1;while(i10){if(i5)gotolabel;printf(%d ,i);ii1;}label:return0;语句如果使用的不当就会导致在函数内部随意乱跳转打乱程序的执行流程。需谨慎使用。

相关新闻

交通流理论核心:从流量、密度、速度关系到基本图与跟驰模型

交通流理论核心:从流量、密度、速度关系到基本图与跟驰模型

1. 从“堵车”说起:为什么我们需要交通流理论? 每天上下班,你大概率会经历堵车。看着前方密密麻麻的车辆,从完全静止到缓慢蠕动,再到某个路口后突然变得通畅,你有没有想过,这背后有没有一套规律…

2026/7/30 7:56:20 阅读更多 →
近战联机游戏开发:核心技术挑战与解决方案

近战联机游戏开发:核心技术挑战与解决方案

1. 近战联机游戏的技术挑战 近战动作游戏的联机实现远比射击类游戏复杂得多。当玩家A在本地挥剑攻击时,如何让远程玩家B准确看到这一动作并做出反应?这个看似简单的需求背后涉及帧同步、碰撞检测、状态同步等核心技术难点。 Photon Melee 2是Photon引擎…

2026/7/30 7:56:20 阅读更多 →
STM32 HAL库ADC实战:从轮询到DMA的高效数据采集指南

STM32 HAL库ADC实战:从轮询到DMA的高效数据采集指南

1. 项目概述:为什么HAL库的ADC值得你花时间? 如果你正在用STM32做项目,无论是测量温度、电压,还是采集传感器信号,ADC(模数转换器)几乎都是绕不开的一环。几年前,我刚开始接触STM32时…

2026/7/30 7:56:20 阅读更多 →

最新新闻

Qt QMessageBox、QDialogButtonBox中英文翻译动态切换

Qt QMessageBox、QDialogButtonBox中英文翻译动态切换

QMessageBox、QDialogButtonBox中英文翻译动态切换,单独的固定显示成中文的方法很多,对于需要中英文翻译动态切换的场景就不适用,把固定的中文改成Qt翻译机制能处理的tr字符串就行了。本文基于Qt5.14.2版本,对QMessageBox、QDialo…

2026/7/30 9:14:44 阅读更多 →
构建高效数字工具箱:101个精选网站分类解析与使用指南

构建高效数字工具箱:101个精选网站分类解析与使用指南

1. 项目概述:一份数字时代的“藏宝图” 最近和几个做内容、搞运营的朋友聊天,发现一个挺有意思的现象:大家每天泡在网上,信息源却越来越同质化。算法推荐把我们都圈在了一个个“信息茧房”里,刷来刷去都是那些熟面孔。…

2026/7/30 9:14:44 阅读更多 →
电商卖家如何选择 AI 绘图工具?5 款电商专用 AI 作图平台深度测评

电商卖家如何选择 AI 绘图工具?5 款电商专用 AI 作图平台深度测评

摘要:随着 AI 作图普及,越来越多电商卖家依靠 AI 替代传统外包摄影与美工。但市面上 AI 工具五花八门,通用 AI 绘画工具往往存在商品变形、版权模糊、不支持批量铺货等痛点。本文结合 28 份行业资料、真实电商场景实测,选取当下热…

2026/7/30 9:14:44 阅读更多 →
Python项目依赖管理实战:从虚拟环境到生产部署的完整方案

Python项目依赖管理实战:从虚拟环境到生产部署的完整方案

1. 项目概述:为什么依赖管理是打包部署的命门干了这么多年Python开发,我见过太多项目在本地跑得风生水起,一到部署上线就各种“水土不服”。最常见的报错就是“ModuleNotFoundError: No module named ‘xxx’”。这背后的问题,十有…

2026/7/30 9:14:44 阅读更多 →
RAG技术测试挑战与工程化实践指南

RAG技术测试挑战与工程化实践指南

1. RAG技术体系的核心价值与测试挑战 RAG(Retrieval-Augmented Generation)作为当前大模型应用落地的关键技术路径,正在经历从原型验证到工业级部署的关键转型期。我们团队在金融、医疗等高风险领域落地RAG系统的实践中发现,传统&…

2026/7/30 9:14:44 阅读更多 →
STM32F1与F4系列GPIO配置差异详解:从时钟到复用功能的实战指南

STM32F1与F4系列GPIO配置差异详解:从时钟到复用功能的实战指南

1. 项目概述:为什么F1和F4的引脚配置值得深究? 如果你刚开始接触STM32,或者从经典的F1系列(比如STM32F103,也就是我们常说的“蓝桥杯神板”)过渡到性能更强的F4系列(比如STM32F407)&…

2026/7/30 9:13:44 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻