zoukankan      html  css  js  c++  java
  • C语言循环

    一、程序结构

    在C语言程序中,一共有三种程序结构:顺序结构、选择结构(if和switch分支结构)、循环结构;

    1)顺序结构

    从头到尾一句接着一句的执行下去,直到执行完最后一句;

    2)选择结构

    执行到某个节点时,根据判断条件的结果来决定执行分支的方向,由if和switch实现。

    3)循环结构

    循环结构有一个循环体,循环体里是一段代码。对于循环结构来说,判断循环的条件,来决定是否继续执行循环体,由while、do while和for来实现。

    二、while循环

    while循环的一般形式为:

      while (表达式)
      {
        语句块
      }
    

    意思是,先计算表达式的值,当值为真时(非0即是真),执行语句块,执行完语句块后,回到循环首部再次计算表达式的值,如果为真,又执行一次语句块……,这个过程会一直重复,直到表达式的值为假,就不再执行语句块

    循环也常常出现在我们的生活中,以超女选秀为例。

      // 超女已准备出场
    
      while (是否有未出场的超女)
      {
        // 判断超女的年龄
        // 判断超女的身材
        // 判断超女的颜值
        // 送往后宫
      }
    

    超女选秀就是一个循环,是否有未出场的超女是循环首部要判断的条件,它的取值会随着循环次数的增加而改变,判断超女的年龄、判断超女的身材、判断超女的颜值、送往后宫是循环体,随着循环次数的增加,全部的超女已出场,循环体不再执行。

    三、do while循环

    do while循环的一般形式为:

      do
      {
        语句块
      }  while (表达式)
    

    do while先执行一次循环,然后再判断表达式的值,如果为真,再执行一次循环体,如此重复下去。

    在实际开发中,几乎不用 do while,所以就不讲它了。

    四、循环的跳转

    continue和break两个关键字用在循环体中,用于控制循环体代码的执行流程。

    continue跳转到循环的首部。

    break跳出循环。

    以超女选秀为例:

      // 超女已准备出场
    
      while (是否有未出场的超女)
      {
        // 判断超女的年龄
        if (年龄小于16岁) continue;
        // 判断超女的身材
        if (身材不火辣) continue;
        // 判断超女的颜值
        if (颜值不漂亮) continue;
        // 判断已选出的超女数量,如果已经有10位了,就不要再选了
        if (已选出的超女数量等于10) break;
      }
    
      // 送往后宫
    

    超女出场后,先看看身份证上的年龄,如果不够16岁,没到法定年龄,评委就会说直接下一个,即continue,这个不够16岁的小姑娘直接回家。

    如果本次选秀的任务是选出10位超女,如果选出的超女已经有10位了,活动结束,即break,没选上的和没出场的直接回家。

    五、while循环的应用

    利用一个循环,把用户每次从键盘输入的数据累加起来,如果总和超过了5000,循环结束。

    示例(book31.c)

    /*
     *  程序名:book31.c,此程序用于演示while循环 
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      int times=0;   // 记录用户输入数据的次数
      int value=0;   // 用户每次从键盘输入的数据
      int sum=0;     // 记录用户输入数据的和
    
      while (sum<5000)  // 如果sum的值小于5000,进入循环
      {
        printf("请输入数字:");    // 提示用户输入
        scanf("%d",&value);        // 接受用户从键盘输入的数据
    
        times++;                   // 用户输入数据的次数自增1
        sum=sum+value;             // 记录用户输入数据的和
      }
    
      printf("您一共输入了%d个数据,和为%d。
    ",times,sum);
    }
    

    运行效果

    在这里插入图片描述

    六、for循环

    for循环的一般形式为:

     for (语句1;表达式;语句2)
      {
        语句块
      }
    

    1)for循环开始时,会先执行语句1,而且在整个循环过程中只执行一次语句1

    2)接着判断表达式的条件,如果条件成立,就执行一次循环体中的语句块

    3)语句块执行完后,接下来会执行语句2

    4)重复第2)步和第3),直到表达式的条件不成立才结束for循环。

    注意:

    1)在for循环中,语句1表达式语句2都可以为空,for (;;)等同于while (1)。

    2)continue和break两个关键字也可以用在for循环体中。

    for循环一般与计数器一起使用。例如:把1到100之间的数值累加起来。

    示例(book33.c)

    /*
     *  程序名:book33.c,此程序用于演示for循环
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      int ii=1;      // 用于for循环的计数器
      int sum=0;     // 记录1到100的累积值
    
      for (ii=1;ii<=100;ii++)
      {
        sum=sum+ii;
      }
    
      printf("1到100的累积值为%d。
    ",sum);
    }
    

    运行效果

    在这里插入图片描述

    七、for循环嵌套

    我们再来看超女选秀例子,超女共分为3组,每组有4位超女,主持人利用for循环嵌套来安排超女们出场。

    示例(book35.c)

    /*
     *  程序名:book35.c,此程序用于演示for循环的嵌套
     *  作者:C语言技术网(www.freecplus.net) 日期:20190525
    */
    #include <stdio.h>
    
    int main()
    {
      int ii=0;         // 超女分组编号的计数器
      int jj=0;         // 每组超女序号的计数器
    
      for (ii=1;ii<=3;ii++)
      {
        for (jj=1;jj<=4;jj++)
        {
           printf("第%d组的第%d位超女出场。
    ",ii,jj);
        }
      }
    }
    

    运行效果

    在这里插入图片描述

    八、循环的选择

    for循环可以实现while循环的功能,while循环也可以实现for循环的功能,没有那个更好的说法,要看应用场景。

    for循环更合适事先知道循环总次数的场景,一般与计数器或数组结合一起使用,数组的知识我们在后面介绍。

    while循环更合适事先不知道循环总次数的场景,以达到某个目标为目,例如超女选秀,报名有多少人没关系,已选够10位或没人可选是循环的结束。

    九、死循环

    死循环是指循环的条件永远为真。

      while(1)
      {
        // 循环体
      }
    

    出现死循环的情况有两种:1)程序的逻辑错误;2)程序员故意为之。第一种情况就不说了,程序员自己去解决,第二种是程序功能的需要,但是程序员仍有其它的办法让程序中止,这么说可能难以理解,没关系,在以后的课程中将会介绍。

    如果您的程序不小心进入了死循环,可以用Ctrl+c中止。

    十、应用技巧

    1)for循环的计数器,习惯的写法是for (ii=0;ii<=10;ii++),表示从0、1……到10,从小到大的方式计数,但是在某些应用场景中,可能需要从大到小的方式计数,for (ii=10;ii>=0;ii--),也是可以的。

    2)for循环的计数器,习惯的写法是for (ii=0;ii<=10;ii++),表示从0、1……到10,从小到大一次增加1的方式,但是在某些应用场景中,计数器不一定是增加ii++,ii=ii+2也是可以的。

    十一、课后作业

    1)采用一个while循环,把1到100之间的数值累加起来,实现book33.c程序的功能。

    2)采用一个for循环,把用户每次从键盘输入的数值累加起来,如果总和超过了5000,循环结束,实现book31.c程序的功能。

    3)采用您认为更合适的循环,输出九九乘法表,如下:
    在这里插入图片描述
    4)采用一个while循环,接受键盘输入的整数,如果输入的整数大于100,丢弃;如果输入的整数小于等100,把每次输入值累加起来,如果输入的整数值为0,跳出循环。最后显示输入了的有效的数据(大于0小于等于100的数)的个数,并显示有效数据的总和。

    5)采用一个循环,输出0到100之间的偶数。

    6)采用一个循环,输出0到100之间的能整除5的数字。

    7)一共有5名超女,采用一个循环,在界面上输入超女数据,按下列要求选出妃子、宫女和杂役。循环结束后,显示选秀结果(妃子、宫女、杂役的人数)。

    妃子:(1)年龄18-25岁;(2)身高165-178cm;(3)身材火辣;(4)颜值漂亮。

    宫女:(1)年龄18-30岁;(2)身高160-165cm;(3)身材火辣或者普通;(4)颜值一般。

    嬷嬷:(1)年龄35-40岁;(2)身高155-165cm;(3)身材普通或者飞机场;(4)颜值一般。

    十二、版权声明

    C语言技术网原创文章,转载请说明文章的来源、作者和原文的链接。
    来源:C语言技术网(www.freecplus.net)
    作者:码农有道

    如果文章有错别字,或者内容有错误,或其他的建议和意见,请您留言指正,非常感谢!!!

  • 相关阅读:
    python之基础2
    python之文件2
    python之入门2
    python之入门
    python之多并发2
    python之面向对象2
    python之MySQL系列
    python之文件
    python之多并发
    Google身份验证器详解
  • 原文地址:https://www.cnblogs.com/wucongzhou/p/12498975.html
Copyright © 2011-2022 走看看