分支与循环专题

张开发
2026/4/10 18:30:36 15 分钟阅读

分享文章

分支与循环专题
c语言是结构化的程序设计语言这里的结构指的是顺序结构选择结构循环结构1.if语句1.1ifif语句的语法形式如下如果条件成立便为真语句就会执行在c语言里非0表示真0表示假例如1.2else上述代码中的else同样是一个关键字它通常与if配套使用如果if的条件成立就输出if的语句否则便输入else的语句1.3分支中包含多条语句默认if和else都只控制一条语句如果想要让其控制多条语句便需要用大括号把语句括起来如下#include stdio.h int main(){int max; if(21){ printf(21); max2; } return 0; }如果if或else后面不添加大括号就只能控制一条语句1.4if的嵌套使用在日常生活中很多事情都不是非黑即白的那我们该如何使用if语句来判断多种情况呢此时便需要用到if的嵌套如下tipselse会与最近的if匹配而不是对齐的if2.关系操作符在c语言中用于比较的表达式称为关系表达式表达式中的操作符则称为关系操作符主要有下面6个⼤于运算符⼩于运算符⼤于等于运算符⼩于等于运算符相等运算符!不相等运算符表达式的结果通常返回1或0用来表示真假0为假非0为真这部分有两个需要注意的点2.1区分和和是完全不同的两个操作符前者用来比较两个数是否相等后者则是用来给变量赋值的假如在一个if语句中将写成了如下那么无论a是否等于b程序都会输出ab,因此在写代码的过程中假设要用操作符可以这样用如果不小心将写成了那么程序将会报错提醒2.2尽量不连用关系运算符在数学中abc这样的连续比较是不存在问题的但是在c语言中这样的写法等价于(ab)c,也许你会说这有什么区别吗其实编译器在处理时会先计算判断ab,并且返回0或者1从而导致c实际上是跟0或1进行对比而不是和b进行比较如果真的想进行abc这样的比较可以写成这样babc3条件运算符条件运算符也叫做三目运算符形式如下:ab?a:b;这段代码的意思是假如ab,就返回a否则就返回b,计算出来的结果是整个表达式的结果可以用一个变量来进行接收这里补充一下操作符分为三类单目操作符双目操作符和三目操作符顾名思义单目操作符就是操作数只有一个以此类推4.逻辑运算符逻辑运算符有一下三种:1.!:逻辑取反运算符用来改变表达式的真假2.:逻辑与运算符用来表达并且的意思3.||:逻辑或运算符,用来表达或者的意思4.1逻辑取反运算符!假设a是一个非零的数那么!a表示的就是假相反如果a0那么!a表示真4.2逻辑与运算符逻辑与运算符表示并且的意思ab,假设a和b都为真则表达式整体为真其他不管是哪种情况都为假4.3逻辑或运算符逻辑或运算符与逻辑与运算符用法类似只不过逻辑或运算符是或者的意思,a||b,假如a和b都为0则表达式的结果为假其他不管哪种情况表达式的结果都为真4.4判断闰年我们来练习一下闰年的判断规则1.能被4整除但不能被100整除2.能被400整除能满足上面任意一条规则的年份都是闰年这是代码的实现注意到判断闰年的方法被写成了一个函数这在之后的学习会提到函数如何编写和使用4.5短路现实生活中有着短路的现象在c语言中同样有着这一现象。在c语言的逻辑运算符中表达式总是从左到右来进行判断的如果左侧的表达式满足逻辑运算符的条件那么右侧的表达式就不会进行先以来进行举例a3a6假设a3那么这个表达式无论如何都无法成立了a6则不会进行判断||也是类似的a12||a2假设a12满足了第一个表达式那么无论如何这个表达式都成立了a是否等于2便不会进行判断了5.switch语句除了switch语句c语言还提供了switch语句来实现分支结构在switch语句中case为入口break为出口switch语句的用法如下:#includestdio.h int main(){ int a0; scanf(%d,a); switch(a){ case 1: ;break; case 2: ;break; default: ; } return 0; }上面的代码用来判断a的值当a为1时执行case 1后面的语句当a为2时执行·case 2后面的语句,其他情况都执行default后面的语句这里有几点需要注意的,1.switch括号里的必须是整形表达式2.case后面的必须是整形常量表达式3.case和default的位置都没有固定要求只不过习惯于把default放在最后4.case和后面的数字之间必须有空格5.每个case语句执行完之后后面都需要添加break来跳出这个语句否则这个case及其以后的case语句都会执行有的人可能会说既然都有了if语句那为什么还要有switch语句其实我一开始也是这样想的只不过在学习的过程当中计算机语言的每个算法程序语句都有其可取之处6.while循环讲了选择语句后接下来要讲的就是循环语句6.1while语句和if语句while语句和if语句的用法大差不差接下来看一段代码while和if的使用格式相同只不过如果条件恒为真if语句只会执行一次而while语句则会反复执行从而陷入死循环因此在使用while语句时最好让它的变量是可变的在经历一定次数的循环后使得条件由真变为假从而跳出循环6.2while语句的执行流程下面给出一张逻辑图6.3while循环的使用与练习练习1:打印1到10的数字如图所示练习2:输入一个正整数逆序打印这个数的每一位例如输入1234屏幕上打印4 3 2 1要达到这个效果我们就得能够获取到这个数的每一位在这个地方我们可以使用/与%通过%10来得到这个数字的最后一位在同过/10来使这个数消去最后一位现在就开始实现7.for循环7.1for循环的语法格式for(表达式1;表达式2;表达式3)表达式1:循环变量的初始化表达式2:循环结束条件的判断表达式3:循环变量的调整7.2for循环的执行流程见下图7.3for循环的实践与练习练习1:打印1到10的整数练习2:计算1到100中3的倍数之和7.4for循环和while循环的对比如果仔细观察不难发现for循环和while循环是可以相互转换的两者的条件类似都有循环变量都有结束条件循环变量也都会改变只不过for循环的三个部分比较集中更加便于管理但是while循环同样也有可取之处8.do while循环do while循环是三种循环用得最少的只不过在某些特定的场景也会用到例如菜单的打印,do while循环与前面两种循环不同前面两种循环是先判断条件成不成立成立的话再执行语句do while循环则是先执行语句再判断while之后的表达式8.1do while循环的语法格式do{//内容}while();8.2do while循环的执行流程见下图8.3do while循环的实现与练习练习1:打印1到10的数字练习2:求一个正整数的位数因为要考虑到0的存在所以这里用do while循环来实现比较合适9.break和continue语句在循环执行时如果发生了某种情况便需要提前终止循环这是很正常的情况c语言提供了continue和break这两个关键字来满足这种需求break:直接跳出循环不再执行之后的循环continue:跳出本次循环会进行之后的循环9.1while循环中的break和continue9.1.1break9.1.2continue因为n的判断在n的控制语句之前所以当n等于5时continue会反复执行而n的值并不会改变从而陷入了死循环9.2for循环中的break和continue9.2.1break在break上for循环和while循环是没有差别的9.2.2continue因为for循环的变量控制语句在前面所以并不会像while循环一样陷入死循环9.3do while循环中的break和continue具体用法和while循环中基本一致这里就不过多介绍了10.循环的嵌套循环是可以相互嵌套使用的这里来看一个例子练习:打印100到200之间的素数tips:素数指的是只能被1和自身整除的数要注意i和sign创建的位置防止初始值不为011.goto语句goto语句是中特别的语句能够实现在同一个函数跳转到设置好的标号处在多重循环里goto语句能够实现快速地跳出来本篇文章到这里就结束了谢谢各位的观看这是我个人的gitee仓库里面有日常写的一些代码感兴趣的话可以关注一下陌染青云 (mo-ran-qingyun) - Gitee.com

更多文章