一起学习C语言:C语言循环结构(一)

  上一章 <一起学习C语言:C语言基本语法> 系列内容中,我们了解了if语句、switch语句的使用方式以及不同运算符的优先级等内容。本章节,我们学习C语言循环结构用法。


章节预览:

1. C语言循环结构
1.1 什么是循环结构
1.2 for语句
1.3 for语句分析
1.4 for语句用法
目录预览


章节内容:


1. C语言循环结构

  经过前几章学习,您已经具备编写算法的基础了。接下来,我们学习循环结构,进一步了解编程语言的奥妙。这部分知识比较重要,理解这部分知识,可以让我们具有设计结构算法的思路。


1.1 什么是循环结构

  生活中,我们每一天、每一周甚至每一个月都重复着做一些事情。比如周一至周五需要去上课或去工作,周六和周日属于休息日,由我们自由分配。如果我们统计一个月的休息日有多少天,使用分支结构统计,代码量将会非常庞大并且分支条件也非常多。这种情况下,我们应该选择循环结构,由我们来控制执行周期或执行条件。
  循环结构属于表达式控制结构,即表达式结果为“真”,执行结构语句块内的语句,执行结束后再次判断表达式,如果还为“真”,继续执行,并依此循环。表达式为假,则跳到循环结构之后的语句执行。


1.2 for语句

  for语句属于顶部驱动循环结构,一般用作周期式运算。周期式运算一般按照某一种规则进行,比如0、1、2、3、4、5,又如16、8、4、2、1等等。


  for语句形式

    for(表达式1 ; 表达式2 ; 表达式3) {   //形式一
        语句块
    }

    for(表达式1 ; 表达式2 ; 表达式3)    //形式二
    {
        语句块
    }

  for语句表达式由三个独立的表达式组成,它们之间用分号(;)隔开。

  表达式1:一般用作变量对象初始化。比如int i = 0或i = 100,表示for语句从初始值0或100开始运算。而C99之前的版本中,则把变量类型对象定义在for语句上方。

  表达式2:一般用作表达式条件判断。比如i < 100,表示i小于100为“真”,执行for语句块内容。

  表达式3:一般用作变量对象赋值。比如i++ (1),++i (2),表示i的值自增加1。


(1):i++属于自增运算,它表示语句块运算完成,并赋值后再自身增加1。也可以理解为i++优先级低于赋值运算符,比如:
   int i = 1; // i等于1
   int a = i++ + 2; //a等于3。 i的值还是1,然后加2,得到3,并赋值给a。赋值结束后,i自身加1,得到i等于2。

(2):++i也属于自增运算,它表示先自身增加1,然后再与别的值运算。也可以理解为++i优先级高于别的运算符,比如:
   int i = 1; //i等于1
   int a = ++i + 2; //a等于4。 i首先自身加1得到2,然后加2,得到4,并赋值给a。


  【例5.1】 计算1-100之间的相加结果。

        int sum = 0;
        for (int i = 1;i <= 100;i++) {
            sum += i;
        }


    示例结果

        sum等于5050。

    示例分析

        1. 表达式1“int i = 1”,表示变量对象i初始赋值为1,并且在for语句执行周期内,只执行一次。表达式1的优先级最高。
        2. 表达式2“i <= 100”,表示i小于等于100,如果结果为“真”,执行for语句块内语句,否则跳出for结构并执行for结构之后的语句。表达式2的优先级第二高。
        3. 表达式3“i++”,表示i自身加1。表达式3中,也可以写为“++i”。表达式3的优先级最低。

        其中2.和3.属于周期性运算,比如表达式2结果为“真”,执行语句块内语句,然后执行表达式3,它们属于一次执行运算。然后开始下一次执行运算,先执行表达式2并以此循环,一直到表达式2结果为“假”,跳出for结构。


1.3 for语句分析

  for语句可以按周期执行除void(1)之外任意类型值,比如整数值、浮点数值、逻辑数值、甚至是字符串值。现在我们来分析for语句:

      int day = 0;
      for (int i = 1;i <= 7;++i) {    //表达式1中即可以定义变量对象,也可以只进行变量对象赋值
          if (0 == (i % 6) || 0 == (i % 7))
              ++day;
      }


      示例结果

          day等于2。

      示例分析

          1. 这个示例可作为我们一周的照常生活来参考,通过for语句块内的if判断语句,判断出我们一周的休息天数。
          2. 表达式1“int i = 1”,可以理解为一周中的星期一。我们按照星期一、星期二这种形式向后排序。
          3. 表达式2“i <= 7”,可以理解为我们只记录一周时间。
          4. 表达式3“++i”,可以理解为一次只确认一天时间。这里我们使用“++i”进行自增运算。
          5. if语句表达式“0 == (i % 6) || 0 == (i % 7)”,可以理解为“i整除6”或“i整除7”的日子,属于休息日。


(1):void表示无类型,它无法定义变量对象,并且无法在表达式中使用,它一般用在无返回值函数中,作为返回值类型使用。在后续内容中,将会讲述函数知识。


  【例5.2】 计算15(含15)之内的奇数个数。

      int number = 0;
      int i = 15;
      for (;i >= 1;i–) {    //表达式1可以为空,但要保留分号“;”。
          if (1 == (i % 2))
              ++number;
          }


      示例结果

          number等于8。

      示例分析

          1. 表达式1“int i = 15”,表示定义int类型对象i,并赋值为15。
          2. 表达式2“i >= 1”,可以理解为最小奇数。
          3. 表达式3“i-- (3)”,可以理解为一次自减1。这里同样可以使用“–i (4)”进行自减运算。
          4. if语句表达式“1 == (i % 2)”,可以理解为“i整除2”得到余数等于1,表示奇数。


(3):i–属于自减运算,它表示语句中运算完成,并赋值后再自身减少1。也可以理解为i–优先级低于赋值运算符,比如:
     int i = 1; // i等于1
     int a = i-- + 2; //a等于3。 i的值还是1,然后加2,得到3,并赋值给a。赋值结束后,i自身减1,得到i等于0。

(4):–i也属于自减运算,它表示先自身减少1,然后再与别的值运算。也可以理解为–i优先级高于别的运算符,比如:
     int i = 1; //i等于1
     int a = --i + 2; //a等于2。 i首先自身减1得到0,然后加2,得到2,并赋值给a。


  for语句中,表达式1和表达式3可以为空,但表达式2不应该为空。因为,表达式2属于判断表达式,存在判断条件的情况下,for语句才能确保正确执行,否则for语句成了无限循环结构。


1.4 for语句用法

  for语句中的表达式,既可以是单个条件构建的表达式,也可以由多个条件组成的复合表达式。 比如for (int i = 15, a = 1;true && i >= 1;true && i–)或for (int i = 15, a = 1;!false && i >= 1;!false && --i)。


  【例5.3】 输出0-100之间的偶数值。

      for (int i = 0, value = 1; i <= 100; (++i % 2 == 0 ? i : i += value)) {
          printf(“i=%d.\n”, i);
      }


    示例分析

        1. 表达式1“i = 0, value = 1”,表示定义int类型对象i和value,并分别赋值为0、1。
        2. 表达式3“(++i % 2 == 0 ? i : i += value)”,可以理解为首先执行i自增运算,然后整除2,如果结果为0,表示i为偶数,i的值不变。否则i为奇数,i的值加等于value,然后进入下一次运算。


  示例中的写法比较少见,实际使用时不建议这样写,这里只做参考。实际使用for语句时,应精简每一个表示式,尽量做到表达式内只有一个条件。


目录预览


<一起学习C语言:C语言发展历程以及定制学习计划>
<一起学习C语言:初步进入编程世界(一)>
<一起学习C语言:初步进入编程世界(二)>
<一起学习C语言:初步进入编程世界(三)>
<一起学习C语言:C语言数据类型(一)>
<一起学习C语言:C语言数据类型(二)>
<一起学习C语言:C语言数据类型(三)>
<一起学习C语言:C语言基本语法(一)>
<一起学习C语言:C语言基本语法(二)>
<一起学习C语言:C语言基本语法(三)>
<一起学习C语言:C语言基本语法(四)>
<一起学习C语言:C语言基本语法(五)>

发布了104 篇原创文章 · 获赞 546 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/a29562268/article/details/104739580