C语言的分支和循环语句

1、什么是语句

C语句可分为以下五类:

  1. 表达式语句
  2. 函数调用语句
  3. 控制语句
  4. 复合语句
  5. 空语句

本文重点介绍控制语句

C语言提供了许多控制语句,用于控制程序的执行流程。这些控制语句可以让程序根据不同的条件执行不同的操作。C语言中的控制语句可以分为以下几类:

条件语句:用于根据不同的条件执行不同的操作。C语言中的条件语句有if语句、if-else语句和switch语句。
循环语句:用于重复执行一段代码,直到满足特定条件为止。C语言中的循环语句有do-while语句、while语句和for语句。
转向语句:用于跳过当前循环,直接执行下一条语句。C语言中的转向语句有break语句、goto语句、continue语句和return语句。
复合语句:用于把多个语句作为一条语句。C语言中的复合语句由大括号{}组成。

这些控制语句可以帮助我们更有效地组织和控制程序的执行流程。

2、分支语句(选择结构)
2.1 if语句

if语句的语法形式如下:

单分支:

1.fi  (表达式)

2.      语句;      //表达式为真则执行(注意:C语言表示真和假是通过非0就是真,0就是假。

运行结果:

如果a=20

运行结果:

  双分支:
  1. if(表达式) //表达式为真则执行语句1

  2. 语句1;

  3. else              //表达式为假则执行语句2

  4. 语句2;

运行结果:

if、else语句在使用时需要注意

if 和else 默认只能控制一条语句,要想控制多条语句就要加上 {},如果没有加上{}则可能会影响代码运行的结果。

运行结果:

改进:

  

多分支:

if  (表达式1)           //输入要满足的条件

     语句1;              //若满足if中的条件,则执行语句1

else if  (表达式2)  //若不满足if中的条件

   语句2;             //若不满足if中的条件,则执行语句2

else                   //若既不满足if中的条件,也不满足else if中的条件

   语句3;            //若既不满足if中的条件,也不满足else if中的条件,则执行语句3

悬空else问题。

这就是悬空 else 的问题,如果有多个 if 和 else ,可以记住这样⼀条规则, else 总是跟最接近 的 if 匹配。

让 else 和第⼀个 if 语句对齐,我们以为 else 是和第⼀个if匹配的,当 if语句不成⽴的时候,自然想到的就是执行 else 后的语句,打印 haha ,但实际上 else 是和第⼆个 if进行匹配的,这样后边的 if...else 语句是嵌套在第⼀个 if 语句中的,如果第⼀个 if 语句就不 成⽴,嵌套 if 和 else 就没机会执行了,最后什么也不打印。

代码改进:

我们在写代码时适当的带上⼤括号 {},可以让我们代码的逻辑更加的清晰明了,所以⼤家以后在写代码的时候要注意括号的使用,让代码的可读性更⾼。

2.2 switch语句

除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的if...else 结构,⽤于判断条件有多个结果的情况。它把多重 的 else if 改成更易⽤、可读性更好的形式。

switch语句的语法形式如下:

switch(整形表达式)

{

case 整型常量表达式: 语句;

}

注意:

switch 后的表达式 必须是整型表达式。

case 后的值,必须是整形常量表达式。

switch语句的使用:

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

switch语句中的break和default。

例如:

输入相应数字,分辨是工作日还是休息日。

解释: 

当代码中加入break后,当运行到break所在位置时,会跳出switch语句,而default语句可以写在任何一个 case 标签可以出现的位置。 当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,不固定。而且语句流会像执行一个case标签一样执行default子句。

3.循环语句

C语言中的循环语句主要有for循环、while循环和do-while循环。

for循环:用于对一个范围内的数值进行迭代。for循环由三部分组成:初始值表达式、循环条件表达式和循环变量的变化表达式。
while循环:用于在满足条件的情况下反复执行语句。当while语句执行时,先判断表达式真假。若为真(非零),则执行语句开始循环;若为假(零),则直接结束。
do-while循环:先执行一次循环体,然后判断条件是否满足,如果满足则继续执行,如果不满足则跳出循环。

3.1 while循环

while语法结构:

while(表达式)

     循环语句结构;

                              while语句的执⾏流程图

用法while跟if语句类似,如果while(表达式)中的表达式成立,运行循环语句结构;否则,不运行。

例如:

 用while循环实现打印1~10的数字。

3.2 while语句中的break和continue。

break的应用

解释:

当i等于5的时候,循环在 break 的地方终止,不再打印,不再循环。所以 break 的作用就是永久的终⽌循环,只要 break 被执行, break 外的第⼀层循环就终止。

continue应用

解释:

看到这⾥我们就能分析出来, continue 可以帮助我们跳过某⼀次循环 continue 后边的代码,直接到循环的判断部分,进⾏下⼀次循环的判断,如果循环的调整是在 continue 后边的话,可能会造成 死循环。

3.3 for循环

for循环的语法结构:

  1. for(表达式1; 表达式2; 表达式3)

  2. 循环语句;

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

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

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

             for循环的执⾏流程

整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。

例如:

用for在屏幕上打印1~10的数字:

总结:

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。

3.4 for循环中的break、continue

for循环中的break和continue,它们的意义和while循环中的类似。

for 循环中的 break 也是用于终止循环的,不管循环还需 要循环多少次,只要执行到了 break ,循环就彻底终止,我们上代码。

总结:

在 for 循环中 continue 的作⽤是跳过本次循环中 continue 后的代码,直接去到循环的调 整部分。

3.5 while循环与for循环的对比:

while循环
int main()
{
    int i = 0;                  //初始化
    while (i <= 10)             //判断部分
    {
        printf("%d ", i);
        i++;                    //调整部分
    }
    return 0;
}
 
for循环
int main()
{
    int i = 0;
    //for(i=1(初始化); i<=10(判断部分); i++(调整部分))
    for (i = 1; i <= 10; i++)
    {
        printf("%d ", i);
    }
    return 0;
}
 

总结: 

for 和 while 在实现循环的过程中都有初始化、判断、调整这三个部分,但是 for 循环的三个部 分⾮常集中,便于代码的维护,⽽如果代码较多的时候 while 循环的三个部分就⽐较分散,所以从形 式上 for 循环要更优⼀些。

3.6 do-while循环 

do…whille()语句的语法:

do

            循环语句;

while(表达式);

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

例如 :打印数字1-10

                      do-while循环的执行流程图

3.7 do while循环中的break和continue

总结:do.while 语句中的 break 和 continue 的作⽤和 while 循环中⼏乎⼀模⼀样。

4. goto语句

C语⾔提供了⼀种⾮常特别的语法,就是 goto 语句和跳转标号, goto 语句可以实现在同⼀个函数 内跳转到设置好的标号处。

goto 语句如果使⽤的不当,就会导致在函数内部随意乱跳转,打乱程序的执行流程,所以建议是能不用尽量不去使用;但是 goto 语句也并不是没用,在多层循环的代码中,如果想快速跳出 使用 goto 就很方便。

  • 10
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值