三、分支和循环

发布时间:2026/8/6 1:40:55

三、分支和循环
三、分支和循环c语言是结构化的程序设计语言有顺序结构、选择结构、循环结构1.if语句1.1 ifif(表达式) 语句表达式成立为真则语句执行表达式不成立为假则语句不执行在c语言中0为假非0表示真如果表达式的结果为0则语句不执行表达式的结果不是0则语句执行。1.2 elseif(表达式) 语句 else 语句2练习输入一个年龄大于等于18就输出成年否则就输出未成年int main() { int age 0; printf(%s\n,请输入年龄); scanf(%d,age); if(age 18){ printf(%s\n,成年了); } else{ printf(%s\n,未成年); } return 0; }1.3 分支中包含多条语句默认if和else语句中都只能控制一条语句。如要控制多条语句就要使用{ }将代码括起来。{ }括起来的叫程序块或者复合语句。1.4嵌套if在if else语句中else可以与另外一个if语句连用构成多重判断。练习1.输入一个人的年龄。2.如果年龄在18岁打印“少年”。3.如果年龄在18岁至44岁打印“青年”。4.如果年龄在45岁至59岁打印“中年”。5.如果年龄在60岁至89岁打印“老年”。6.如果年龄在90岁以上打印“老寿星”。int main() { int age 0; printf(%s,请输入一个年龄); scanf(%d,age); if(age 18){ printf(%s\n,少年); }else if(age 45){ printf(%s\n,青年); }else if(age 60){ printf(%s\n,中年); }else if(age 90){ printf(%s\n,老年); }else{ printf(%s\n,老寿星); } return 0; }1.5 悬空else问题如果有多个if和elseelse总是跟最接近的if匹配。有下面一段代码#include stdio.h int main() { int a 0; int b 2; if(a 1) if(b 2) printf(hehe\n); else printf(haha\n); return 0; }执行上面代码发现啥也不输出因为else总是和最近的if匹配从第一个if就已经结束判断了。2.关系操作符c语言中用于比较大表达式称为“关系表达式”里面使用的运算符称为关系运算符主要有以下6个大于运算符小于运算符大于或等于运算符小于或等于运算符相等运算符!不相等运算符注意1.和是不一样的运算符x 3的意思是把3赋值给xx 3的意思是变量x的值和3做比较。2.多个关系运算符不能连用。j ky要写成jk ky3.条件操作符条件操作符也叫三目操作符需要接受三个操作数形式如下exp1 exp2 exp3如果exp1为真exp2就计算如果exp1为假exp3就计算。int main() { int m 0; int b 0; scanf(%d,m); b (m 5 ? 3 : -3);//如果m的值大于5就输出3如果m的值小于5就输出-3 printf(%d\n,b); return 0; }4.逻辑操作符、、逻辑运算符提供逻辑判断功能主要有三个逻辑取反运算符改变单个表达式的真假。逻辑与运算符就是并且的意思两侧的表达式都为真则为真否则为假。逻辑或运算符就是或者的意思两侧至少有一个表达式为真则为真否则为假。注c语言中非0表示真0表示假。4.1逻辑取反运算符 aa非0001int main() { int a 0; if(!a){ printf(%s,haha); } return 0; }如果a为0取反就是非0代码就会执行。4.2 逻辑与运算符abab非0非01非0000非00000就是逻辑与运算符是一个双目操作符只有两边的表达式都为真多时候才为真只要有一个假都为假。4.3 逻辑或运算符abab非0非01非0010非01000就是逻辑或运算符也是一个双目操作符只要有一个是真的这个表达式就是真的只有两个都是假的时候才为假。4.4 练习闰年的判断润年判断的规则1.能被4整除并且不能被100整除的是闰年。2.能被400整除的是闰年。int main() { int year 0; printf(请输入一个年份); scanf(%d,year); if( (year%4 0) (year % 100 ! 0) || (year % 400 0)){ printf(是闰年\n); } else{ printf(是平年\n); } return 0; }4.5 短路c语言逻辑运算符还有一个特定它总是先对左侧的表达式求值再对右侧的表达式求值这个顺序是保证的。如果左侧的表达式满足条件就不再对右侧的表达式求值。这种情况称为“短路”。仅仅根据左侧的操作数就知道整个表达式的结果不对右侧操作数进行计算的称为短路求值。int main() { int i 0,a0,b2,c 3,d4; i a b d;//输出a1,b2,c3,d4 //i a||b||d;//输出a1,b3,c3,d4 printf(a %d\n b %d\n c %d\nd %d\n, a, b, c, d); return 0; }5.switch语句switch语句是一种特殊的if...else结构用于判断条件有多个结果的情况。它把多重的else if改成更易用、可读性更好的形式。switchexpression{ case value1:statement case value2:statement ... default:statement }注switch后的expression必须是整型表达式。case后的值必须是整型常量表达式。5.1if语句和switch语句的对比练习输入一个整数计算除3之后的余数使用if语句完成如下int main(){ int n 0; scanf(%d,n); if(n % 3 0){ printf(余数为0\n); }else if(n % 3 1){ printf(余数为1\n); }else if(n % 3 2){ printf(余数为2\n); }else{ printf(余数是其他\n); } return 0; }使用switch语句完成如下int main(){ int n 0; scanf(%d,n); switch(n % 3){ case 0: printf(余数为0\n); break; case 1: printf(余数为1\n); break; case 2: printf(余数为2\n); break; default: printf(余数是其他\n); break; } return 0; }注意1.case和后边的数字之间必须有空格。2.每一个case语句中的代码执行完成后需要加上break才能跳出switch语句。5.2switch语句中的break只有在switch语句中使用break才能跳出switch语句如果每一个case语句没有break语句代码就会往下执行直到遇到break语句或者switch语句结束。注也不是每个case语句后都用break语句得根据实际情况来练习输入1到7的数字1到5显示工作日6、7显示休息日int main(){ int num 0; scanf(%d,num); switch(num){ case 1: case 2: case 3: case 4: case 5: printf(%s\n,工作日); break; case 6: case 7: printf(%s\n,休息日); break; default: printf(%s\n,请输入正确的日期); } }5.3 switch 语句中的default使用switch语句中经常遇到一些值无法匹配case语句的时候需要做处理时就加入default子句。5.4 switch语句中case和default的顺序问题在switch语句中case语句和default语句是没有顺序的只要满足需求就可以。通常把default子句放在最后处理。6.while循环while(表达式) 语句//如果循环体想包含更多的语句可以加上大括号6.1while语句的执行流程首先执行判断表达式表达式的值为0循环直接结束表达式的值不为0则执行循环语句语句执行完继续判断判断是否进行下一次。6.2 练习输入一个正的整数逆序打印这个整数的每一位例如输入1234输入4321int main() { int num 0; scanf(%d,num); while(num) { printf(%d\n,num % 10); num / 10; } return 0; }7.for循环for循环是三种循环里面使用最多的。7.1 语法形式for循环的语法如下for表达式1表达式2表达式3 语句//如果循环体想包含更多的语句可以加上大括号表达式1用于循环变量的初始化表达式2:用于循环结束条件的判断表达式3:用于循环变量的调整7.2for循环的执行流程首先执行表达式1对循环变量初始化然后执行表达式2的判断部分如果表达式2的结果0则循环结束如果表达式2的值 0则执行循环语句循环语句执行完再执行表达式3调整循环变量再去执行表达式2如果为0就结束循环。注表达式1只在初始化的时候执行1次剩下的就是表达式2循环语句表达式3在循环。7.3 练习计算1100之间3的倍数的数字之和。int main(){ int i 0; int sum 0; for(i 0;i 100;i) { if (i % 3 0) { sum i; } } printf(%d,sum); return 0; }8.do while循环8.1语法形式do 语句 while表达式do while循环直接进入循环体执行循环语句然后再执行while后的判断表达式表达式为真就进行下一次表达式为假则不在继续循环。8.2 do while 循环的执行流程do while 语句中循环体至少执行一次这就是do while 循环比较特殊的地方。8.3练习输入一个正整数计算这个整数是几位数例如输入1234输出4输入12输出2int main(){ int num 0; int i 0; scanf(%d,num); do{ num / 10; i; }while(num); printf(%d,i); return 0; }9.break和continue语句在循环执行的过程中如突发某些情况需要提前终止循环c语言中提供了break和continue两个关键字。break的作用是永久终止循环只要break被执行就会跳出循环继续往后执行。continue的作用是跳过本次循环中continue后边的代码在for循环和while循环中有差异。9.1 while循环中的break和continue9.1.1 breakint main(){ int i 0; while (i 10){ if(i 5){//当i等于5后就执行break语句循环就结束了 break; } printf(%d,i); i; } return 0; }9.1.2continueint main(){ int i 0; while (i 10){ if(i 5){//当i等于5后就执行continue直接跳过了continue后面的代码去循环判断的地方 continue; } printf(%d,i); i;//因为跳过了i所以i一直等于5程序就陷入了死循环 } return 0; }9.2 for循环中的break和continue9.1 breakint main(){ int i 0; for(i 1;i 10;i){ if(i 5){//当i等于5后就执行break语句循环就结束了 break; } printf(%d,i); } return 0; }9.2.2continueint main(){ int i 0; for(i 1;i 10;i){ if(i 5){//当i等于5后就执行continue语句就跳过本次循环然后就走到for循环的表达式3 i 了 continue; } printf(%d,i); } return 0; }9.3 do while循环中的break和continuedo while循环中的break和continue的作用和while循环中一模一样。10.循环的嵌套while循环for循环do while循环往往需要三种循环嵌套在一起才能更好的解决问题循环嵌套练习找出100200之间的素数并打印在屏幕上注素数又称质数只能被1和本身整除的数字int main(){ int i 0; for(i 100;i 200;i){ int j 0; int x 1;//假设是素数 for(j 2;j i - 1;j){ if(i % j 0){ x 0; } } if (x 1){ printf(%d,i); } } return 0; }11.goto语句c语言提供了一种特别的语法就是goto语句和跳转标号goto语句可以实现在同一个函数内跳转到设置好的标号处。int main(){ printf(hehe\n); goto next; printf(haha\n); next: printf(跳转到这里了\n); return 0; }goto语句如果使用不当就会导致在函数内乱跳打乱程序的执行流程建议不要轻易使用。如果在多层循环嵌套的代码中如果想快速跳出循环使用goto就非常方便了。for(){ ... for(){ ... for(){ goto next; } } } next:上述代码如要跳出全部循环需要使用3个break才能跳出循环在这种情况下我们就会使用goto语句就会更加的快捷。—————————————————————————————————————————————————上述为个人学习笔记如有错误请批评指正

相关新闻

跨境卖家必看:批量图片翻译与视频字幕翻译工具推荐

跨境卖家必看:批量图片翻译与视频字幕翻译工具推荐

2026/8/6 1:40:55

一、问题引入:跨境卖家的多语言内容困境在跨境电商领域,语言障碍往往是卖家拓展海外市场的第一道门槛。一个亚马逊卖家上架新品时,常常需要面对这样的窘境:产品图上的中文标签需要翻译成英语、德语、日语等多国语言,视…

学术研究者的高效翻译助手:Zotero PDF2zh插件完全指南

学术研究者的高效翻译助手:Zotero PDF2zh插件完全指南

2026/8/6 1:30:55

学术研究者的高效翻译助手:Zotero PDF2zh插件完全指南 【免费下载链接】zotero-pdf2zh PDF2zh for Zotero | Zotero PDF中文翻译插件 项目地址: https://gitcode.com/gh_mirrors/zo/zotero-pdf2zh 作为一名学术研究者,你是否经常需要阅读大量英文…

用 LVGL 给 UEFI Setup 换一套图形界面:架构、实现与 QEMU 验证

用 LVGL 给 UEFI Setup 换一套图形界面:架构、实现与 QEMU 验证

2026/8/6 1:30:55

一、为什么做这件事 用过 UEFI 固件设置界面的人都知道,UiApp 里的 Setup 页面是典型的文本式交互:标题栏、提示/取值两栏布局、帮助面板、底部快捷键一行字。它由 EDK II 的 DisplayEngineDxe(文本渲染引擎) SetupBrowserDxe&…

SPC 新版培训实战指南:从理论到产线落地的全流程解析

SPC 新版培训实战指南:从理论到产线落地的全流程解析

2026/8/6 4:01:02

在汽车零部件生产线上,最让人头疼的往往不是偶尔出现的不良品,而是那些“明明设备参数没变,产品尺寸却忽大忽小”的诡异波动。很多质量工程师都有过这样的经历:拿着卡尺测了一堆数据,算出个 Cp 值看着挺漂亮&#xff0…

C# .NET Excel数据导入实战:EPPlus读取与DataTable、数据库批量写入

C# .NET Excel数据导入实战:EPPlus读取与DataTable、数据库批量写入

2026/8/6 4:01:02

1. 项目缘起:为什么我们总在和Excel数据打交道?如果你是一名C# .NET开发者,无论是做企业内部的业务系统、数据中台,还是开发一些数据处理工具,有一个场景你大概率逃不掉:从Excel文件里读取数据,…

AI智能体与Token成本:流量2.0时代的范式革命与实战指南

AI智能体与Token成本:流量2.0时代的范式革命与实战指南

2026/8/6 4:01:02

1. 流量2.0时代:从“眼球”到“智能”的范式革命如果你最近还在琢磨怎么搞流量、做增长,但脑子里想的还是SEO、信息流投放、短视频矩阵这些“老黄历”,那可能已经有点跟不上趟了。我干了十几年互联网,从PC时代的站长、移动互联网的…

2026年AI智能体开发实战:从模型选型到生产级应用部署

2026年AI智能体开发实战:从模型选型到生产级应用部署

2026/8/6 4:01:02

1. 从“龙虾”到登顶:一场静默的AI范式转移 如果你在2026年3月的某个深夜,打开任何一个科技社区或社交媒体,大概率会被一只“龙虾”刷屏。这不是什么新的美食风潮,而是一个代号为“Lobster”的智能体,它以一种近乎戏谑…

WPS Office(64 位)

WPS Office(64 位)

2026/8/6 4:01:01

链接:https://pan.quark.cn/s/921f73d33748WPS Office X64 是一款功能强大的办公软件,该软件不仅内置文字、表格、演示、PDF 处理等办公功能,除了常见的文档格式,还推出了智能文档、智能表格、智能表单等三种智能化操作。现已更新…

VMware虚拟机磁盘挂载:从原理到实战的Linux存储管理指南

VMware虚拟机磁盘挂载:从原理到实战的Linux存储管理指南

2026/8/6 3:51:01

1. 项目概述:为什么虚拟机磁盘挂载是运维的必修课在虚拟化环境里折腾,尤其是用 VMware 跑 Linux 虚拟机,磁盘扩容和挂载几乎是绕不开的日常操作。你可能遇到过这种情况:线上服务跑得好好的,突然日志就报“No space lef…

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案

2026/8/4 15:23:37

ncmdumpGUI:一键解锁网易云音乐ncm文件的终极解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经从网易云音乐下载了心爱的歌曲&am…

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比

2026/8/5 6:02:27

分布式配置中心选型实战:Nacos与Consul在创业场景下的对比工程导读:本文深入讨论 分布式配置中心选型实战:Nacos与Consul在创业场景下的对比 在生产工程实践中的核心落地方案。基于 分布式架构与微服务设计 视角,剖析实际痛点、架…

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案

2026/8/5 8:19:55

MoneyPrinterPlus实战指南:AI视频批量生成与自动化发布完整解决方案 【免费下载链接】MoneyPrinterPlus AI一键批量生成各类短视频,自动批量混剪短视频,自动把视频发布到抖音,快手,小红书,视频号上,赚钱从来没有这么容易过! 支持本地语音模型chatTTS,fasterwhisper,…

Unity相机抖动插件Camera-Shake集成与应用实战指南

Unity相机抖动插件Camera-Shake集成与应用实战指南

2026/8/6 0:00:51

1. 项目概述与核心价值最近在做一个动作游戏,需要给主角的重击和爆炸场景加点料,让打击感更足。我第一时间就想到了给相机加个抖动效果,毕竟这是提升玩家沉浸感最简单直接的手段之一。自己手写一个也不是不行,但时间成本高&#x…

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

Cocos Creator 3.7微信小游戏开发:从架构设计到提审上线的全流程实战指南

2026/8/6 0:00:51

1. 项目概述:为什么需要一份3.7版本的专属适配指南?如果你是一位使用Cocos Creator开发微信小游戏的开发者,并且项目正运行在3.7版本上,那么你很可能已经感受到了那份“甜蜜的烦恼”。一方面,Cocos Creator 3.7是一个功…

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

AI编程实战:从Prompt工程到工具链集成,打造高效开发工作流

2026/8/6 0:00:51

1. 项目概述:一次开源AI编程课程的深度重构 最近,我把自己的开源AI编程课程《Claude Code》做了一次从里到外的大更新。如果你对利用Claude、Codex这类大模型来辅助编程感兴趣,或者正在寻找一个能跟上最新AI编码工具迭代节奏的学习路径&#…

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

摆脱论文困扰!盘点2026年全网爆红的的AI论文写作工具

2026/8/4 13:34:51

一天写完毕业论文在2026年已不再是天方夜谭。2026年最炸裂、实测能大幅提速的AI论文写作工具,覆盖选题构思、文献整理、内容生成、格式排版等核心场景,真正帮你高效搞定论文难题。 一、全流程王者:一站式搞定论文全链路(一天定稿首…

导师推荐!2026最新AI论文工具测评与实用推荐

导师推荐!2026最新AI论文工具测评与实用推荐

2026/8/4 14:25:14

2026年真正好用的AI论文工具,核心看生成的论文质量、低AI味、格式正确、学术适配四大指标。综合实测,千笔AI、ThouPen、豆包、DeepSeek、Grammarly 是当前最值得推荐的梯队,覆盖从免费到付费、从中文到英文、从文科到理工的全场景需求。 一、…

告别游戏崩溃:XCOM 2模组管理器的智能革命

告别游戏崩溃:XCOM 2模组管理器的智能革命

2026/8/4 15:11:03

告别游戏崩溃:XCOM 2模组管理器的智能革命 【免费下载链接】xcom2-launcher The Alternative Mod Launcher (AML) is a replacement for the default game launchers from XCOM 2 and XCOM Chimera Squad. 项目地址: https://gitcode.com/gh_mirrors/xc/xcom2-lau…