分支(选择)语句和循环语句
  3YvCTIaZY6TM 2023年11月15日 16 0

本章重点学习分支语句和循环语句

分支语句

C语言是一门结构化的程序设计语言

1.顺序结构

2.选择结构

3.循环结构

  • if
  • switch

循环语句

  • while
  • for
  • do while

什么是语句

C语言中由一个分号:隔开的就是一条语句。比如

printf("hehe")

1+2

//是一条空语句

1.分支语句(选择结构)

分支(选择)语句和循环语句_代码块

分支(选择)语句和循环语句_if语句_02


(1)if语句

那if语句的语法结构是怎么样的呢?

语法结构

if(表达式)

语句:

   if(表达式)

              语法1;

   else

              语法2:;

//多分支

   if(表达式1)

              语句1;

   else if(表达式)

              语句2;

   else

               语句3;

课堂演示代码:

分支(选择)语句和循环语句_if语句_03

分支(选择)语句和循环语句_if语句_04

代码块

如果条件成立,要执行多行语句,怎应该使用代码块。

分支(选择)语句和循环语句_代码块_05

课堂演示代码:

分支(选择)语句和循环语句_代码块_06

悬空else

当你写了这个代码:

分支(选择)语句和循环语句_代码块_07

如果想要else跟if(a==1)匹配

分支(选择)语句和循环语句_if语句_08分支(选择)语句和循环语句_if语句_09

如果你想else跟if(b==2)匹配

分支(选择)语句和循环语句_switch语句_10

if书写形式的对比( )

分支(选择)语句和循环语句_代码块_11如果条件成立返回 x

                                                      否则返回 y

分支(选择)语句和循环语句_switch语句_12

分支(选择)语句和循环语句_if语句_13

分支(选择)语句和循环语句_switch语句_14

比较可得代码2和代码4写的比较好,逻辑更清晰,不易出错。

(2)switch语句

switch语句也是一种分支语句。常常用于多分支的情况

比如:

分支(选择)语句和循环语句_代码块_15


那我没写成if...else if...else if的形式太复杂,那我们就用switch语句。

switch(整型表达式)

{

      语句项:

}


而语句项是什么呢?

//是一些case语句:

//如下:

case 整型常量表达式:

       语句;

分支(选择)语句和循环语句_代码块_16

在switch语句中的break

在switch语句中,我们没法直接实现分支,搭配break使用才能实现真正的分支。

分支(选择)语句和循环语句_代码块_17

分支(选择)语句和循环语句_switch语句_18分支(选择)语句和循环语句_代码块_19

switch会直接从case中进入

从break停止结束


case后面的break不是必须要加上的。

分支(选择)语句和循环语句_switch语句_20

break语言的实际效果是把语言列表划分为不同的部分

编程好习惯

    在最后一个case语言的后面加上一条break语句。(之所以这么写是可以避免出现以前的最后一个case语句后面忘了添加break语句)


default子句(默认)

如果表达的值与所有的case标签的值都不匹配怎么办?

其实也没什么,结构就是所有的语句都被跳过而已。

程序并不会终止,也不会报错,因为这种情况在C语言中并不认为适合错误。

但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢?

你可以在语句列表中增加一条default子句,把下面的标签

default:

写在任何一个case标签可以出现的位置。

当switch表达式的值并不匹配所有的case标签的值时,这个default子句后面的语句就会执行。

所以,每个switch语句中只能出现一条default子句。

但是它可以出现在语句列表的任何位置,而且语句流会像贯穿一个case标签一样贯穿default。

编程好习惯

在每个switch语句中都放一条default子句是一个好习惯,甚至可以在后面再加一个break。


分支(选择)语句和循环语句_switch语句_21分支(选择)语句和循环语句_代码块_22



2.循环语句

  • while
  • for
  • do while

分支(选择)语句和循环语句_switch语句_23

(1)while

我们已经掌握了,if语句:

if(条件)

          语句:

当条件满足的情况下,if语句后的语句执行,否则不执行。但是这个语句只会执行一次。

但是我们发现生活中很多的实际例子是:同一件事情我们需要完成很多次。

那我们怎么做呢?C语言中给我们引入了:while语言,可以实现循环。


分支(选择)语句和循环语句_if语句_24


exper(表达式)    stmt(语句)

在屏幕中输入1~10


分支(选择)语句和循环语句_if语句_25

while语句中的break和continue

break介绍

分支(选择)语句和循环语句_switch语句_26分支(选择)语句和循环语句_if语句_27

其实在循环中只要遇到break,就停止后期的所有的循环,直至终止循环。所以:while中的break是用于永远终止循环的。

continue介绍

分支(选择)语句和循环语句_代码块_28

总结:continue在while循环中的作用就是:

continue是用于终止本次循环的,也就是循环中continue后边的代码不会再执行,而是直接跳转到while语句的判断部分。进行下一次循环的入口判断


再看几个代码

分支(选择)语句和循环语句_if语句_29ctrl+z可以获得EOF停下来

getchar()可以接受一个字符并把它放在ch里

putchar跟printf作用相似。

EOF-end of file 文件结束标志

再看一个代码

分支(选择)语句和循环语句_switch语句_30

password-密码     %s是字符串    scanf输入函数,并存放在password数据中

当我们输入密码123456 ABCD时,scanf会读取123456,余下的 ABCD会默认被getchar所读取,为了保证ret=getchar()被影响,导致无法输入Y/N以至放弃确认,所以我们要在其中加入一个while循环将剩余的密码吸收,运行到ret=getchar()时,才可以输入Y/N。

(2)for循环

我们已经知道了while循环,但是我们为什么还要一个for循环呢?首先来看看for循环的语法:

语法

for(表达式1:表达式2:表达式3)

循环语句:

表达式1表达式1为初始部分,用于初始化循环变量的。表达式2表达式2为条件判断部分,用于判断循环时候终止。表达式3表达式3为调整部分,用于循环条件的调整


分支(选择)语句和循环语句_if语句_31

分支(选择)语句和循环语句_switch语句_32


分支(选择)语句和循环语句_switch语句_33

分支(选择)语句和循环语句_switch语句_34

可以发现现在while循环中依然存在循环的三个必须条件,但是由于风格的问题使得三个部分很可能偏离较远,这样查找修改就不够集中和方便。所以,for循环的风格更胜一筹。 for循环使用的频率也最高。

break和continue在for循环中

我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中也是一样。但是还是有些差异:

分支(选择)语句和循环语句_代码块_35

在for1,2,3,4,6,7,8,9,10continue在5时会跳过,调整得很快。      在while1,2,3,4   continue进入死循环。


for语句的循环控制变量

一些建议:

1.不在for循环体内改变循环变量,防止for循环失去控制

分支(选择)语句和循环语句_switch语句_36分支(选择)语句和循环语句_if语句_37

对i的调整不要在循环内

2.建议for语句的循环控制变量的取值采用“前区后开区间”写法

分支(选择)语句和循环语句_代码块_38

一些for循环的变种

分支(选择)语句和循环语句_if语句_39

变种一        进入死循环

for循环的初始化,调整,判断  都可以被省略

但是,for循环的判断部分如果被省略,那判断条件就是:恒为真。

如果不是特别熟悉,就不要随便省略

分支(选择)语句和循环语句_if语句_40分支(选择)语句和循环语句_switch语句_41

变种2   只能打印两个hehe

//请问能循环几次

分支(选择)语句和循环语句_if语句_42

k赋值=0,循环不进行,所以循环0次。

(3)do while

(1)do语句的语法

do

         循环语句:

while(表达式);

分支(选择)语句和循环语句_if语句_43

分支(选择)语句和循环语句_if语句_44

(2)do语句的特点

循环至少执行一次,使用的场景有限,所以不是经常使用。

执行流程

分支(选择)语句和循环语句_if语句_45

在do while中的break

分支(选择)语句和循环语句_代码块_46

分支(选择)语句和循环语句_switch语句_47

在do while中的continue

分支(选择)语句和循环语句_代码块_48

分支(选择)语句和循环语句_代码块_49

continue会跳过本次循环后面的代码


【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
3YvCTIaZY6TM
作者其他文章 更多

2023-11-21

2023-11-17