美文网首页C语言学习简书收藏--C语言C语言探索之旅
C语言探索之旅 | 第一部分第七课:循环语句

C语言探索之旅 | 第一部分第七课:循环语句

作者: 程序员联盟 | 来源:发表于2016-10-08 05:39 被阅读810次

    -- 简书作者 谢恩铭 转载请注明出处

    第一部分第七课:循环语句


    上一课C语言探索之旅 | 第一部分第六课:条件表达式结束后,今天我们来学习《循环语句》。

    下一课我们就来一起编写第一个C语言的小程序啦,激动不?那就快点把今天这课学完吧!

    循环是什么呢?

    简单地说:循环使你能够重复执行同样的指令

    放轻松,这一课的内容比较简单,不像之前的【变量】和【条件表达式】那么难以消化,所以好好享受这一课,因为第二部分要开始难起来咯!

    循环是什么


    循环是一种结构,使指令可以被执行多次

    与 条件语句/条件表达式 类似,循环语句也有几种形式。但是至终,目的仍然是一样的:多次执行同样的指令。

    我们一起来看看C语言中常用的三种循环:

    • while循环

    • do...while循环

    • for循环

    这三种循环的基本原理都是一样的,如下图所示:

    上图中,依次进行的是:

    1. 电脑从上到下执行各条指令,像往常一样

    2. 执行完最后一条命令,重新回到第一条命令,从上往下开始执行

    3. 如此周而复始

    上图中存在的问题是:如果我们不停止循环,那么电脑是有能力一直执行下去的(我一路向北 离开有你的季节 方向盘周围 回转着我的后悔...)。

    是的,我们的电脑兄不像有些人,它是从来不抱怨的,叫它干什么就干什么,这也是我们喜欢它的原因。

    永不停止的循环有一个术语叫“死循环”,陷入死循环的电脑很容易卡机,这也是程序员经常抱怨的问题之一。

    怎么能够让循环停下来呢?

    聪明的读者已经想到了:条件表达式

    对了,上一课我们学了条件表达式,现在到它派用场的时候了。

    事实上,我们创建循环语句的时候,总会给它一个条件,这个条件指明: 在条件为真时,才继续执行循环,否则停止。

    下面我们就来看看第一种循环: while循环

    while循环


    while循环的结构是这样的:

    while (/* 条件 */)
    {
      // 重复执行的指令
    }
    

    不难理解吧,while在英语中是“当...时”,即是说:

    当括号里的“条件”为真时,执行大括号里的指令,一旦条件变为假,不执行指令,while循环结束。

    用一个小程序来看一下吧,这个程序中,我们要让用户输入数字27,只有当用户输入的是27时,程序才会停止,否则会一直让用户输入数字(我懂的,我懂的,我很任性):

    #include <stdio.h>
    
    int main(int agrc, char *argv[]) {
      int number = 0;
    
      while (number != 27) {
        printf("请输入 27 ! ");
        scanf("%d", &number);
      }
    
      return 0;
    }
    

    运行程序,会如下显示:

    请输入 27 ! 10
    请输入 27 ! 17
    请输入 27 ! 30
    请输入 27 ! 27

    接下来,我们用while循环来做一点更有意思的事情:让循环执行一定次数

    int counter = 0;
    
    while (counter< 10) {
      printf("你好 !\n");
      counter++;
    }
    

    它会显示10次“你好!”,如下:

    你好!
    你好!
    你好!
    你好!
    你好!
    你好!
    你好!
    你好!
    你好!
    你好!

    逻辑到底是怎么样的呢?

    1. counter初始值为0

    2. 我们的while循环的循环条件是 counter < 10,也就是说,只有在counter变量的值小于10的时候,才会执行循环体(大括号里)的指令: 打印“你好!”

    3. 因为初始counter是0,循环条件为真,所以执行printf,显示“你好!”

    4. 在循环体中,我们将counter的值加1

    5. 第二次判断条件的时候,counter的值已经是1了,但还是满足counter < 10这个条件,因此再次显示“你好!”

    6. 如此这般,一直到counter的值变为10,不满足counter < 10这个条件了,while循环才结束,所以一共打印了十个“你好!”

    为了加深理解,我们再来写一个小程序,这次我们让while循环每次输出变量的值:

    int counter= 0;
    
    while (counter< 10) {
      printf("变量的值是 %d\n", counter);
      counter++;
    }
    

    执行程序,显示如下:

    变量的值是 0
    变量的值是 1
    变量的值是 2
    变量的值是 3
    变量的值是 4
    变量的值是 5
    变量的值是 6
    变量的值是 7
    变量的值是 8
    变量的值是 9

    这下是否理解得更透彻了?

    do...while循环


    这种类型和while循环非常类似,不过比较少用到。

    与while循环唯一的不同点就是循环条件的位置,while循环中循环条件是在一开始,而do...while循环中是在最后:

    int counter = 0;
    do {
      printf("你好 !\n");
      counter++;
    } while (counter < 10);
    

    这样的不同改变了什么呢?

    • 很简单,while循环可能会一次也不执行循环体(大括号里)的指令,假如条件一开始就不满足。

    • 而do...while循环是先执行循环体的指令,再做条件判断,所以do...while的指令至少会被执行一次

    如果我们将do...while循环中的变量counter初始化为40,那么do...while会显示一次“你好!”,对于while循环,如果counter初始为40,那么一次也不会显示“你好!”

    for循环


    理论上,for循环可以实现我们想要的任何类型循环。

    之前已经说过,for循环就是另一种形式而已。

    之前while循环的例子:

    int counter = 0;
    while (counter < 10) {
      printf("你好 !\n");
      counter++;
    }
    

    以上的代码,我们可以写一个for循环的版本,它们做的是同样的事情:

    int counter;
    
    for (counter = 0 ; counter < 10 ; counter++) {
      printf("你好 !\n");
    }
    

    这两个循环都会显示十次“你好!”

    for循环和while循环有什么区别呢?

    • for循环的例子中,counter变量并没有在声明的时候初始化

    • 在for后面的括号中,有更多的东西(下面我们会详述)

    • 在循环体(大括号里的内容)中,没有counter++这个指令

    我们最感兴趣的是for后面的括号中的内容,因为那也是for循环吸引人的地方

    可以看到括号中有三条指令,用分号(;)分隔:

    • 第一条指令用于初始化:在我们的情况,我们将counter的值初始化为0

    • 第二条指令用于规定条件:和while循环一样,这个条件用于判断循环是否继续执行,当这个条件为真时,for循环才会继续

    • 第三条指令用于做自增:这条指令是在循环体中的指令执行完后才执行的,用于更新变量的值;大多数情况下我们是做自增,当然我们也可以做自减(counter--)或者减少任意值(counter-=2) (关于自增和自减,请回去看之前的运算符那一课)

    因此,for循环的逻辑是这样的:

    1. 括号里的第一句指令用于初始化变量,只会执行一次,之后不再执行

    2. 对括号里的第二句指令做判断,如果条件为真,则执行循环体(大括号里)的指令,如果为假,则不执行循环体,for循环结束

    3. 执行完循环体里的指令,接着执行括号里的第三句指令,用于更新变量的值

    4. 再次对括号里的第二句指令做判断,如果条件为真,则执行循环体(大括号里)的指令,如果为假,则不执行循环体,for循环结束

    5. 如此周而复始,注意,括号里的第一句指令只会执行一次,之后就用不上了

    简单说来,for循环浓缩了很多内容在for后面的括号里。

    一定要熟练掌握for循环,因为会很常用

    总结


    1. 循环能够使我们的程序重复执行一系列指令。

    2. 有好几种循环:while,do...while,for 。依场景不同,选择某个循环会更适合。

    3. for循环可能是使用最频繁的循环语句了,在里面我们经常会做变量的增减。

    第一部分第八课预告


    今天的课就到这里,一起加油咯。

    下一次我们学习第八课,来编写我们的第一个C语言小游戏吧!

    相关文章

      网友评论

      本文标题:C语言探索之旅 | 第一部分第七课:循环语句

      本文链接:https://www.haomeiwen.com/subject/qxkuyttx.html