C语言 分支与循环(上)

奋斗吧
奋斗吧
擅长邻域:未填写

标签: C语言 分支与循环(上) 博客 51CTO博客

2023-07-25 18:24:13 120浏览

C语言 分支与循环(上),C语言学习过程记录
  • C语言是结构化的程序设计语言,C语言支持三种结构:顺序结构,选择结构,循环结构。我们可以使用if,switch实现分支循环,for,while,do while实现循环语句

一.if语句

1.语法形式

C语言 分支与循环(上)_while循环

  • 表达式成立,语句执行;反之,则不执行。

C语言 分支与循环(上)_switch语句_02

  • num % 2的意义是判断num除以2的余数,若余数为1,则返回1,表示为真
  • %的用法表达式 x% y 的结果是 x 除以 y 的余数,当 x 能被 y 整除时,其值为 0
  • == 的用法在 x == y 中,如果x跟y的值相等,则返回1,表示真;如果x跟y不相等,则返回0,表示假

2.else

  • 与if形成**if……else……**语句

C语言 分支与循环(上)_while循环_03

3.分支语句中包含多条语句

  • **默认在if语句和else语句中都只控制一条语句,如果想要控制多个分句,要将分句放在大括号中
  • 例如当我们在打印完到达十八岁后“成年”时,还想再打印“就可以谈恋爱了”就可以在分支语句中包含多条语句

C语言 分支与循环(上)_switch语句_04

4.嵌套if

  • **在if else语句中,else可以与另一个if语句连用,进而构成多重判断
  • 例如:要求输入一个整数,判断输入的整数时0,还是正数或负数
  • 第一种写法

C语言 分支与循环(上)_运算符_05

  • 第二种写法(更加简洁)

C语言 分支与循环(上)_switch语句_06

  • 也可先判断大于0等等,此处只写了一种情况

更复杂的逻辑判断

  • 有了嵌套if语句之后,就可以进行更加复杂的逻辑判断
  • 例如:输入一个人的年龄
  • 如果年龄小于18岁,打印少年
  • 如果年龄在18岁至44岁,打印青年
  • 如果年龄在44岁至59岁,打印中老年
  • 如果年龄在6089岁,打印老年
  • 如果年龄大于90岁,打印老寿星
  • 嵌套结构明显的写法

C语言 分支与循环(上)_while循环_07

  • 同样也可以合并省略大括号进行简化,else后不能直接跟括号,一条语句大括号可以省略

C语言 分支与循环(上)_运算符_08

5.悬空else

  • 在有多个if和else的情况下,else总是跟最接近的if匹配
  • 例如:

C语言 分支与循环(上)_switch语句_09

  • 我们可以推测结果是haha吗?a如果都没等于1的话那不就是打印else,最后的结果不就是haha吗
  • 然而结果并非如此

C语言 分支与循环(上)_while循环_10

  • 由打印的结果不难发现,屏幕打印的是空的。这是因为a的值不等于1,那么嵌套在if里的两个语句就没有机会执行。这就印证了开头所说在有多个if和else的情况下,采取就近原则,else总是与相邻最近的if匹配,不管if和else与谁对齐

二.关系操作符

1.基本概念

  • **C语言用于比较的表达式叫做关系表达式,其中所用的符号就叫做关系运算符

大于运算符

  • <小于运算符

=大于等于运算符

  • <=小于等于运算符
  • == 相等运算符
  • !=不相等运算符
  • =赋值
  • 在C语言中,0表示假,所有非零值表示真。但关系表达式通常返回1或者0,表示真假。关系表达式常用于if或while结构。

2.易错提醒

  • 为了避免混淆赋值和相等运算符号,在常量和变量比较大小时,尽量将常量放在左边。因为当常量放在左边时,发生了错写赋值的情况,编译器会报错。

C语言 分支与循环(上)_switch语句_11

  • 多个关系运算符不宜连用,关系符运算从左到右运算

C语言 分支与循环(上)_运算符_12

  • 这是一个判断表达式,从左往右判断:8<10判断结果为1,而1<9判断结果也为1,返回值为1,判断为真,打印的是haha。而不是我们所认为的三个值同时进行比较不成立,判断为假,所打印的hehe

C语言 分支与循环(上)_运算符_13

  • 当我们想进行连续的比较时应使用&&才能达到我们想要的结果。讲求逻辑,不能想当然的去写程序。

三.逻辑操作符:&& ,||, !

  • 逻辑运算符提供逻辑判断功能,用于构建更复杂的表达式,主要有以下三个逻辑操作符:

1.与运算符 &&

  • 与运算符,意为并且(两侧表达式都为真,则为真,否则为假)

C语言 分支与循环(上)_while循环_14

2.或运算符 ||

  • 或运算符,意为或者(两侧表达式至少有一个为真,则为真,否则为假)

C语言 分支与循环(上)_while循环_15

3.逻辑取反运算符 !

  • 逻辑取反运算符(改变单个表达式的真假)

C语言 分支与循环(上)_运算符_16

4.练习:判断年份是否为闰年

  • 输入一个年份year,判断year是否是闰年
  • 闰年判断规则:
  • 能被4整除且不能被100整除的是闰年
  • 能被400整除的是闰年

C语言 分支与循环(上)_switch语句_17

5.短路

  • C语言总是先对左边的表达式求值,在对右边进行求值,这个顺序是保证的。如果左边的表达式满足逻辑运算的条件,就不再对右边的表达式求值,这种情况,我们称为短路
  • 对于与操作符来说,左边操作数的结果是0的时候,右边操作数就不再执⾏。
  • 对于或操作符来说,左操作数的结果不为0时,就⽆需执⾏右操作数

四.switch语句

  • 基本语法:switch语句也是用来实现分支结构的,可以理解为一种特殊形式的if…else语句

C语言 分支与循环(上)_while循环_18

  • switch后的expression必须是整形表达式
  • case后的值,必须是整形常量表达式
  • switch语句表达的是一个明确的值,而不是范围

1.if语句和switch语句的对比

  • 练习:输入任意一整数值,计算除3之后的余数
  • 使用if语句

C语言 分支与循环(上)_while循环_19

  • 使用switch语句

C语言 分支与循环(上)_switch语句_20

  • case和后面的数字之间必须要有空格
  • 每一个case语句中的代码执行完成后,都需要加上break,才能跳出这个switch语句
  • 那么如果我们不加break又会如何呢?

2.switch语句中的break

  • 不加break会出现的情况:

C语言 分支与循环(上)_switch语句_21

C语言 分支与循环(上)_运算符_22

  • 那么,同样都是不加break,为什么第二张图片可以正常执行呢?
  • 其实,是因为我们看到的结果只是结果,而不是程序执行的过程。因为没有break的存在,case 0执行的结果是0或1,执行完后会继续往后执行,把case 1,case 2都执行掉了。这里之所以输入8的时候没有出现像7一样的情况,是因为输入8在执行case 1的时候执行的结果是0,不能执行打印。所以输入8是一个巧合数值。我们要规范代码编写步骤,防范这种巧合错误的出现。
  • 所以在 switch 语句中 break 语句是⾮常重要的,能实现真正的分⽀效果。 当然, break 也不是每个 case 语句都得有,这就得根据实际情况来看了。

3.switch语句中的default

  • 在使⽤switch语句的时候,我们经常可能遇到⼀种情况,⽐如switch后的表达式中的值⽆法匹配代码中的case语句的时候,这时候要不就不做处理,要不就得在switch语句中加入default⼦句。

4.switch语句中case与default的顺序关系

  • 在switch语句中case语句和default语句是没有顺序要求的,只要你的顺序是满⾜实际需求的就可以。不过我们通常是把default⼦句放在最后处理的

  • 循环语句一共有三种为while循环,for循环,do while循环接下来一一介绍

五.while循环

1.while和if的对比

  • while语句的语法结构与if语句非常相似

C语言 分支与循环(上)_运算符_23

  • 下面通过程序观察

C语言 分支与循环(上)_运算符_24

C语言 分支与循环(上)_while循环_25

  • 可以发现if满足条件只打印一次hehe,而while满足条件是死循环打印hehe

2.while语句的执行流程

C语言 分支与循环(上)_运算符_26

3.while循环的实践

  • 在屏幕上打印1~10

C语言 分支与循环(上)_运算符_27

  • 输入4321输出1234

C语言 分支与循环(上)_while循环_28

  • %代表求余运算符号;/代表除法运算符号。

六.for循环

1.形式

-`` for(表达式1,表达式2,表达式3)

    语句;`

- 表达式1用于循环变量的初始化 - 表达式2用于循环结束条件的判断 - 表达式3孕育虚幻变量的调整

2.for循环的执行流程

C语言 分支与循环(上)_运算符_29

3.for循环的实践

  • 在屏幕上打印1~10

4.while循环和for循环的对比

  • 不难发现,for循环更有利于我们对程序进行维护。在代码多的时候,while循环的三个部分就比较的分散,所以从形式上来讲,for循环会更优一点。

5.练习

  • 计算1~100之间3的倍数的数字之和![[Pasted image 20230724212023.png]]

七.do-while循环

1.语法形式

![[Pasted image 20230724212523.png]]

  • while循环和for循环这两种循环都是先判断,如果满足条件就进入循环,而do-while循环则直接进⼊循环体,执⾏循环语句,然后再执⾏while后的判断表达式,表达式为真,就会进⾏下⼀次,表达式为假,则不再继续循环

2.流程图

![[Pasted image 20230724213021.png]]

3.do-while循环实践

  • 在屏幕上打印1~10![[Pasted image 20230724213647.png]]

4.练习

  • 输入一个正整数,计算这个数是几位数
  • 思路:![[Pasted image 20230724214457.png]]
  • 程序:![[Pasted image 20230724215127.png]]

八.break和continue语句

  • break永久的终止整个循环
  • continue作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调整部分。未来当某个条件发⽣的时候,本次循环⽆需再执⾏后续某些操作的时候,就可以使⽤ continue 来实现
  • 在for循环和while循环中,break用法无异,但continue用法不同
  • do-while循环中,break和continue的用法和while循环中的作用基本相同。

九.循环的嵌套

  • 练习:找出100~200之间的素数,并打印在屏幕上。![[Pasted image 20230724224100.png]]

十.goto语句

  • goto 语句可以实现同⼀个函数内跳转到设置好的标号处。![[Pasted image 20230724225042.png]]
  • 同时,goto语句也能快速跳出循环。本来for循环想提前退出得使⽤ break ,⼀个break只能跳出⼀层for循环,如果3层循环嵌套 就得使⽤3个break才能跳出循环,所以在这种情况下我们使⽤ goto 语句就会更加的快捷。
  • goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执⾏流程,所以我们的建 议是能不⽤尽量不去使⽤

好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695