【C语言】分支语句和循环语句

简介: 大家好!我是保护小周ღ,本期为大家带来的是C语言的分支语句和循环语句,详细的介绍了 if()、 switch() 这两种分支语句,以及while()、do while ()、for(),三种循环语句,还有两个控制语句的用法:break和continue;保姆级讲述,包您一看就会,快来试试吧~

  image.gif编辑

 

大家好!我是保护小周ღ,本期为大家带来的是C语言分支语句循环语句,详细的介绍了 if()、 switch() 这两种分支语句,以及while()do while ()for(),三种循环语句,还有两个控制语句的用法:breakcontinue;保姆级讲述包您一看就会,快来试试吧~

image.gif编辑

目录

一、什么是语句?

二、分支语句(选择语句)

2.1 if() 语句

2.1.1 if() 语句的语法结构

2.1.2 复合语句

2.2 switch 语句

2.2.1 switch 的语法结构

2.2.2 default子句

编辑

三、循环语句

3.1 while 语句

3.1.1 控制语句break;

3.1.2 控制语句 continue;

3.2 do while 语句

3.3 for 语句

3.3.1 不一样的 for


一、什么是语句?

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

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

    控制语句用于控制程序的执行流程,用来实现程序的各种结构方式。

    C语言是结构化的程序设计语言,几乎所有的C代码都是由以下三种结构组成的。

      1. 顺序结构
      2. 选择结构
      3. 循环结构

      C语言有9种控制语句,可以分为以下三类:

        1. 条件判断语句也叫分支语句:if 语句、switch 语句;
        2. 循环语句:for 语句、while 语句、do while 语句;
        3. 转向语句:break 语句、continue 语句、return 语句、goto 语句。

        二、分支语句(选择语句)

        2.1 if() 语句

        不知道大家有没有用过Excel 表里面的 if 函数,if(条件,表达式1,表达式2),如果条件成立,则执行表达式1,如果条件不成立,则执行表达式2。而且,if 语句里,也可以嵌套 if 语句。

        举个例子:

        image.gif编辑

        用通俗一点的话来讲就是,如果成绩<60分,执行表达式1,输出“不及格”,如果成绩>=60,就要执行表达式2,这时候表达式2是嵌套的 if 判断语句,所以又执行一下判断,此时要处理的数据范围是 >=60,如果,成绩小于80,此时数据范围就是60<=成绩<80,执行第二个if 语句表达式1,输出“良好”,如果成绩在>=60,的情况下且不小于80,则执行执行第二个if 语句表达式2,输出“优秀”

        C语言当中 if() 语句大同小异,逻辑是相似的,在 if() 语句中,条件:0为假,非0为真条件成立,为真,执行表达式1;条件不成立,为假,执行表达式2


        2.1.1 if() 语句的语法结构

        语法结构:

        if (表达式)

          语句

        if (表达式)

         语句1

        else

         语句2

        这个else可以理解为否则

        多分支(if的嵌套)

        if (表达式1)

          语句1

        else if (表达式2)

          语句2

        else

         语句3

        else的匹配:else是和它离的最近的 if 匹配的。

        例1:

        image.gif编辑

        我们还可以这样写:

        image.gif编辑

        例2:经典的 if语句的嵌套

        image.gif编辑

        给大家解释一下:什么是复合语句,控制语句break;随后在循环语句中会给大家讲。


        2.1.2 复合语句

        如果条件成立,要执行多条语句,则使用复合语句,这里的一对 { } 就是一个代码块(复合)

        复合语句从形式上看是多个语句的组合,但在语法意义上它是一个整体,相当于一条语句,所以凡是可以用简单语句的地方都可以用复合语句来实现。


        作用:


        1、在程序设计中复合语句被看成是一条语句,而不是多条语句。


        2、在只能使用单条语句的地方可以执行多条指令。


        3、这里只能写一条指令,而用复合语句就可以满足一条指令的限制,而执行多条指令。

         


        举个例子:

        如果你好好学习,以后可以找到好offer,走上人生巅峰,如果你不好好学习,毕业就等于失业,此时如果你家里有80套房子,可以继承家业,否则回家种地吧。

        image.gif编辑

        首先博主跟大家介绍一个函数 strcmp() 把这个函数弄明白了,咱们举得例子才能玩的转。

        strcmp,是C/C++的库函数,在string.h 头文件里,作用是比较两个字符串

        strcmp()函数一般形势:strcmp(字符串1,字符串2);

        设这两个字符串为 str1,str2,则strcmp(str1,str2);

        若str1 ==str2,则函数返回值为0;

        若str1 < str2(字符串长度),则函数返回值为负数;

        若str1 > str2,则函数返回值为正数;

        例3: 利用多分支判断,(if嵌套)

        image.gif编辑


        2.2 switch 语句

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

        switch 有一种说法是叫它开关函数,为什么叫开关函数呢,因为他的执行流程就像遍历一排开关,找到符合条件的开关,就打开开关,通电了之后对应的灯就亮了(语句就执行了),但是呢,如果我们不想继续遍历开关了,在灯使用完之后,就要把整个电路断电,break;终止。如果没有找到符合条件的开关,我们也有相应的操作,这个之后讲。

        switch 语句中的break则是跳出函数体,不继续执行该case后面的语句(默认继续执行)。

        2.2.1 switch 的语法结构

        image.gif编辑

        switch()里面的表达式必须是整型表达式。通俗一点可以理解为,整个表达式的结果为整型。

        case 后面的必须是整型常量表达式,1,2,3等,不允许是变量。

        switch() 语句支持嵌套,就像 if 语句一样,case 执行语句时语句可以是另一个switch()语句。

        switch()语句中,break;就像是灵魂,搭配break使用才能实现真正的分支;

        举个例子:

        实现输入一个成绩,判断成绩的级别,不及格,及格,良好,优秀,非常优秀。

        #include<stdio.h>intmain()
        {
        intreport=0;//成绩printf("请输入一个成绩判断级别:");
        scanf("%d",&report);
        //那么怎么我们怎么设置条件呢,switch (report/10)//整型表达式,“条件”    {
        case1: 
        case2: 
        case3:         
        case4: 
        case5: printf("成绩不及格\n下次好好努力"); 
        break;//只有遇到break;以后case 判断才会停下来,默认是继续执行的//所以case 1:case 2:……可以跟case 5:共用一个printf(),case6:
        case7: printf("已及格,成绩良好,继续努力");
        break;
        case8: printf("已及格,成绩优秀,继续保持");
        break;
        case9: 
        //这个有问题,因为101,102,103,等数字/10之后都变成10了,满分则是100分,所以switch()函数也有不方便的地方。//使用if语句,我们就则可以精准的控制数据范围。case10:printf("已及格,成绩非常优秀");
            }
        return0;
        }

        image.gif

        image.gif编辑

        是不是有点复杂,我感觉比 if 语句实现相同的功能还要麻烦。


        2.2.2 default子句

        如果表达的值与所有的case标签的值都不匹配怎么办?程序也并没有错,只是所有case语句都会跳过,什么也不会发生,如果我们需要在所有case标签没有匹配值的情况下给出一些提示,

        例如:输入错误,case 不匹配,请重新输入。就给人一个提示。

        这个时候我们就可以使用 default:

        image.gif编辑

        default:子句的位置,可以写在任何一个case标签可以出现的位置,也在开头也可以,最后也可以,当 switch 表达式的值不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。 所以,每个switch语句中只能出现一条default子句。

        每个switch 语句中最好写入一条default 子句,最好在子句后面再加上一个break;



        三、循环语句

        我们通过学习了 if 语句知道了,当条件满足时,执行 if 后面的“语句”。但是语句只能执行一次。

        我们生活中有很多事情需要我们重复判断执行,那在程序中我们应该怎么办呢?

        C语言中给我们引入了 while,do while ,for  语句可以实现循环。

        关于循环语句,打个比方,就像是汽车上的轮胎,你挂挡、给油,发动机打火,轮胎就可以一直重复的旋转(循环)。当然想让车走什么路,去哪里,干什么,取决于开车的人,轮子老老实实的转。

        当你过个马路等红绿灯停下来时,离合,空挡、踩刹车,发动机都不需要熄火,绿灯亮,挂挡、给油车就可以直接跑,轮子继续转(continue),

        哎呀,开着开着你发现轮胎居然漏气了,你想了一下,门前有一堆碎玻璃,应该给轮胎划了一道口子,导致呢轮子转着转着就漏气了,为了保证安全,你就停车熄火了(break

        如果你已经到达目的地,不想让轮子转了,刹车、发动机熄火,轮子就不转了(条件终止循环 或break;

        当然你也可以让车子不停下来,一直跑,轮胎一直转,会有什么结果?(死循环

        最后呢,油没了,车子就不跑了,轮子就不转了。(内存耗尽,程序挂掉


        3.1 while 语句

        while 语句的语法结构:

        while(表达式)

        循环语句;

        while()里面的表达式往往是循环的终止条件,条件成立为真,不成立为假,0为假,非0为真。

        关于终止循环我们也可以使用控制语句break;来实现。

        循环语句,我们可以使用复合语句,达到循环一段程序的目的。


        例1:

        image.gif编辑

        我们还可以这样写:

        image.gif编辑

        break就是中止的意思,常常用来终止循环,但是外层如果还有循环,是不能跳出外层循环范围的。只能终止包含break的循环


        例2://在屏幕上打印1-10的数字。

        image.gif编辑


        3.1.1 控制语句break;

        break就是中止的意思,常常用来终止循环,但是外层如果还有循环,是不能跳出外层循环范围的。只能终止包含break的循环,switch中的break则是跳出函数体,不继续执行该case后面的语句(默认继续执行)。break 语句终止最近的封闭 do while、 for、 switch, while 语句的执行。循环中的break是用于永久终止循环的。

        image.gif编辑

        这段代码的含义就是循环打印1,2,3,4,5这五个数,打印5次。

        我们把内部循环加入break;试一试;

        image.gif编辑


        3.1.2 控制语句 continue;

        continue 在while循环中的作用就是: continue 是用于终止本次循环的(一次),也就是本次循环中continue 后边的代码不会再执行, 而是直接跳转到while语句的判断部分,条件成立,继续循环,条件不成立,就终止循环。

        例1:

        image.gif编辑

        由上例可知,当 i 等于3 的时候 if 语句条件成立,执行了continue,跳出本次循环,continue 后边的代码没有再执行了。所以没有打印 3。但是跳出本次循环后,循环条件成立,还是继续执行了循环。直到循环条件不成立为止。


        例2:

        image.gif编辑

        为什么这次 3 后面的数没有打印呢,还是相同的道理, 当i 等于3时,if 语句条件成立执了continue; 跳出来本次循环,所以后面的 i 没有执行自增所以 i 又以 3的值重复循环,然后跳出循环,结果陷入了死循环,所以 3 后面的值没有打印。这一点大家一定要注意。


        3.2 do while 语句

        这个一看啊,就是while的亲戚,用法也八九不离十,咱就不多介绍了,

        do while 就一句话,不管三七二十一,先执行一次循环,再来判断条件是否成立。

        所以使用do while 根据实际使用的场景,不经常使用。

        image.gif编辑

        其他的用法跟 while()差不了多少,就是可以先执行一次程序,再判断要不要继续循环。


        3.3 for 语句

        最后一个了,咱们就干脆直接一点,关于for 语句,博主是很喜欢用的,经常在控制下标的时候使用,很方便。

        语法结构:

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

        循环语句;//同样可以是复合语句 { }

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

        表达式2:条件判断,用于判断循环的终止。

        表达式3:为调整部分,用于循环条件的调整,驱使循环结束。

        注意:三个表达式之间用分号(;)隔开

        文邹邹的,直接上代码感受:

        //使用for循环 在屏幕上打印1-10的数字。

        image.gif编辑

        三个表达式相信大家都能够理解。

        如果我们用 while 循环实现相同的功能,两个语句之间又有什么差距呢?

        image.gif编辑

        我们可以看出两个语句要实现相同的功能,同样需要 “三个表达式”,三个部分。

        我们可以根据个人爱好选择使用。实际当中 for 语句使用的最多。


        3.3.1 不一样的 for

        for 循环中的三个表达式——初始化部分,判断部分,调整部分,都可以省略。//不建议都省略

        for 使用多个变量控制循环,

        image.gif编辑


        //使用for循环 在屏幕上打印1-10的数字。

        image.gif编辑


        image.gif编辑


        至此,C语言的分支、循环语句的基本使用方法博主已经分享完了,大家可以自己动手敲敲代码,感受一下。希望对大家有所帮助。

        image.gif编辑

        本期收录于博主的专栏——C语言,适用于编程初学者,感兴趣的朋友们可以订阅,查看其它“C语言基础知识”。C语言_保护小周ღ的博客-CSDN博客

        感谢每一个观看本篇文章的朋友,更多精彩敬请期待:保护小周ღ  *★,°*:.☆( ̄▽ ̄)/$:*.°★*

        文章存在借鉴,如有侵权请联系修改删除!image.gif编辑

        相关文章
        |
        14天前
        |
        C语言
        【C语言基础】:分支与循环
        【C语言基础】:分支与循环
        |
        4天前
        |
        C语言
        C语言循环与分支
        C语言循环与分支
        19 5
        |
        3天前
        |
        存储 算法 C语言
        二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
        二分查找算法的概念、原理、效率以及使用C语言循环和数组的简单实现
        |
        7天前
        |
        C语言
        C语言---正方形图案--循环
        C语言---正方形图案--循环
        |
        7天前
        |
        C语言
        C语言----循环---n的k次方
        C语言----循环---n的k次方
        |
        7天前
        |
        C语言
        C语言---循环迭代的方式求第n个斐波那契数
        C语言---循环迭代的方式求第n个斐波那契数
        |
        7天前
        |
        C语言
        C语言---循环迭代---n的阶乘
        C语言---循环迭代---n的阶乘
        10 0
        |
        7天前
        |
        C语言
        C语言-----分支和循环
        C语言-----分支和循环
        41 0
        |
        22天前
        |
        C语言
        c语言循环题目
        c语言循环题目
        |
        23天前
        |
        C语言
        C语言控制流程详解:分支与循环语句
        C语言控制流程详解:分支与循环语句
        14 0

        相关实验场景

        更多