循环语句学习心得与笔记(分支与循环)

目录

1、C语言中的语句

2.1 单分支结构

2.1.1 语句结构

2.1.2 说明

2.2 双分支结构

2.2.1 语句结构

2.3 多分支结构

2.3.1 语句结构

 2.4 if语句的嵌套

 3、分支结构(选择结构)——switch语句 

3.2 说明

3.3 default 子句

4、循环结构

4.1 while循环

4.1.1 while语法结构

4.1.2 break和continue的作用

4.1.3 说明:

4.2 For循环 

4.2.1 for循环和while循环中break和continue的对比

4.2.2  for语句的循环控制变量

4.2.3 for循环的变种

4.3 do-while循环

4.3.1 do-while 语法结构

4.3.3 说明

 4.4  goto语句


1、C语言中的语句

什么是语句?C语言中由一个分号;隔开的就是一条语句。

C语句可以分为以下五类:

1. 表达式语句

2. 函数调用语句

3. 控制语句

4. 复合语句

5. 空语句

控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言有九种控制语句。可分成以下三类:

1. 条件判断语句也叫分支语句:if语句、switch语句;

2. 循环执行语句:do while语句、while语句、for语句;

3. 转向语句:break语句、goto语句、continue语句、return语句。

2、分支结构(选择结构)——if语句
if语句是最常用的选择结构。

if语句的基本形式有以下三种:

(1)单分支结构

(2)双分支结构

(3)多分支结构

2.1 单分支结构

2.1.1 语句结构


语法结构如下所示:

  • if(表达式)
  •     语句;

2.1.2 说明

  1. (1)如果表达式的结果为真,则语句执行。在C语言中0表示假,非0表示真。

(2)if或else后面默认只能控制一条语句,想让控制多条语句,就需要加上大括号,把多条语句放到一对大括号里。一对大括号叫一个代码块,其实就是一个逻辑,如下所示。

  1. if(表达式)
  2. {
  3.     语句1;
  4.     语句2;
  5.     语句3;
  6.     ......
  7. }

2.2 双分支结构

2.2.1 语句结构

  1. if(表达式)
  2.     语句1;
  3. else
  4.     语句2;

2.3 多分支结构

2.3.1 语句结构

  1. if(表达式1)
  2.     语句1;
  3. else if(表达式2)
  4.     语句2;
  5. else if(表达式3)
  6.     语句3;
  7. ......
  8. else if(表达式n-1)
  9.     语句n-1;
  10. else
  11.     语句n;

 2.4 if语句的嵌套


if语句的嵌套时,会出现else的匹配问题:else跟它离得最近的if匹配,这才是else的正确的匹配方法,而不是它和哪个对齐就和那个匹配,这是错误的。造成else匹配问题的写法,叫做悬空else问题。代码的书写的方法和分割非常重要。详见《高质量C/C++变成指南及编码规范》
 

 3、分支结构(选择结构)——switch语句 

  1. switch(表达式)
  2.     case 常量表达式1: 
  3.          语句体1;
  4.         (break;)
  5.     case 常量表达式2:  
  6.          语句体2; 
  7.         (break;)
  8.     ……
  9.     case 常量表达式n:  
  10.          语句体n;
  11.         (break;)
  12.    (default:      
  13.          语句体n+1;)

3.2 说明


(1)switch的表达式中,case后面的括号内一定是整形常量表达式(不是变量,不是浮点型,也不能是算数表达式如10/n是不行的)。字符也可以。字符也属于整形变量的一种,因为字符底层存储的时候用的是字符的ASCII码。

(2)case语句没有顺序问题。

(3)switch后的表达式和case后面的值决定给了选择语句的入口,break决定了出口,跳出分支。每条语句后加上break这样才实现了真正的分支效果。当从某个case进入选择语句后,如果没有break阻止它停下来,它就会一直往下执行,直到把后面的case语句执行完。但是只要符合程序运行的逻辑,也可以去掉break。

(4)在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。break语句 的实际效果是把语句列表划分为不同的分支部分。

(5)当switch-case语句嵌套时,break跳出的是自己所在的switch语句。

3.3 default 子句


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

        其实也没什么,结构就是所有的语句都被跳过而已。 程序并不会终止,也不会报错,因为这种情况在C中并不认为是个错误。 但是,如果你并不想忽略不匹配所有标签的表达式的值时该怎么办呢? 你可以在语句列表中增加一条default子句,把下面的标签 default: 写在任何一个 case 标签可以出现的位置。当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

4、循环结构

C语言提供了以下3钟循环结构:

(1)用while语句。

(2)用do-while语句。

(3)用for语句。

4.1 while循环

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

  1. if(条件)
  2.      语句;

当条件满足的情况下,if语句后的语句执行,否则不执行。 但是这个语句只会执行一次。 由于我们发现生活中很多的实际的例子是:同一件事情我们需要完成很多次。

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

4.1.1 while语法结构

  1. while(表达式)
  2. {
  3.     循环语句;
  4. }

4.1.2 break和continue的作用


Break作用:在while循环中,break用于永久的终止循环。只要break被执行(不管是不是在if语句中),后面不管还要循环多少次,它都不循环了,就会停止了。while中的break是用于永久终止循环的。

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

4.1.3 说明:

(1)While语句中影响到循环的因素:

  • i的初始值是非常重要的,初始化部分
  • 判断部分。
  • 循环变量调整部分

4.2 For循环 

  1. for(表达式1;表达式2;表达式4)
  2. {
  3.     循环语句(3);
  4. }

表达式1:初始化部分,用于初始化循环变量的。

表达式2:条件判断部分,用于判断循环何时终止。

表达式3:调整部分,用于循环条件的调整。

【注意】与while循环的做对比

这个循环的顺序刚开始进来是1,2,3,4

循环一次后2,3,4

也就是说表达式1只执行一次

For循环的特点是初始化部分只被执行一次。不管循环多少次,初始化只被执行一次。

4.2.1 for循环和while循环中break和continue的对比


While循环中的continue和for循环中的continue是不一样的,for循环中的continue是跳到调整部分,进行i++的调整,而while循环中的continue完全有可能跳过调整部分,导致程序出现死循环。
 

4.2.2  for语句的循环控制变量


建议:

(1)不可在for循环体内修改循环变量,防止for循环失去控制。

(2)建议for语句的循环变量的取值采用“前闭后开区间”写法。

4.2.3 for循环的变种

变种一:初始化部分、判断部分、调整部分三部分均可省略

for循环的三部分都可以省略,但是判断部分省略的话,判断部分恒为真,会使得程序死循环。

变种二:for循环的循环变量控制可以是多个变量。

4.3 do-while循环

4.3.1 do-while 语法结构

  1.  do
  2. {
  3.     循环语句;
  4. }while(表达式);

4.3.3 说明


(1)do-while语句的特点是循环至少执行一次,使用的场景有限,不经常使用。 

(2)do-while和while语句类似,循环变量的++可能会写在后面,有可能被continue语句跳过去,造成死循环。。

(3)break的作用是跳出循环,不是跳过整个程序,如果是循环嵌套的话,一个break只能跳出一层循环

 4.4  goto语句


C语言中提供了可以随意滥用的 goto 语句和标记跳转的标号。
从理论上 goto 语句是没有必要的,实践中没有 goto 语句也可以很容易的写出代码。
但是某些场合下goto 语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。 例如:一次跳出两层或多层循环。
多层循环这种情况使用 break 是达不到目的的。它只能从最内层循环退出到上一层的循环。
 

  • 15
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值