循环/迭代方法

循环,我们比较好理解,就是反复的意思。那么迭代是什么意思?

迭代是重复反馈过程的活动,其目的通常是为了逼近所需目标或结果。每一次对过程的重复称为一次“迭代”,而每一次迭代得到的结果会作为下一次迭代的初始值。

循环或者说迭代方法是只要条件为真(True),就重复执行某些语句。

它的控制流程如下:

循环控制流程图

为什么需要循环方法,下面让我们用一个示例来看一下循环的必要性。
现在我有一个需求,我需要输出和5次"Hello World",那么,我们可以这么来编写我们的代码:

#include<stdio.h>
int main()
{
    printf("\nhello");
    printf("\nhello");
    printf("\nhello");
    printf("\nhello");
    printf("\nhello");
    return 0;
}

以上代码可以看出,代码语句冗余,如果需要输出10次,或者100次的话,那这个代码就会变得非常长。如果要输出100万次呢?岂不是要疯了。幸运的是,C语言引入了强大的循环方法概念。采用循环的方式实现这个功能,代码如下:

int main()
{
    int count;
 
    for(count=0;count<5;count++)
    {
        printf("\nhello");
    }
    return 0;
}

以上是使用for语句循环的控制输出5次"Hello World"的方法,如果需要输出10次或者100次,只需要修改一直数值就可以了。

接下来,我们深入了解一下循环控制方法。

循环方法的类型

循环控制的方法有三种:

  1. for循环;
  2. while循环;
  3. do-while循环

for循环

语法1:
for(表达式1;表达式2;表达式3)
{
   statement1;
   statement2;
   .
   .
   .
   statementn;
}

表达式1是循环的初始化,仅在循环的第一次迭代时执行。

表达式2是循环的条件语句,它将在循环的每次迭代开始时进行检查。如果条件为false,则循环将终止,否则将继续执行循环。

表达式3是循环计数的增/减,它是循环每次迭代的最后一条语句。

表达式1,表达式2,表达式3的位置不固定。例如:

语法2:循环外初始化

表达式1; //初始化
for(;表达式2;表达式3)
{
   statement1;
   .
   statementn;
}

语法3: 在for循环中只有条件检查表达式
 
表达式1; //初始化
for(;表达式2;)
{
   statement1;
   .
   statementn;
   表达式3; //递增或递减
}
 
语法4: 无限循环
 
for(;;)
{
   statement1;
   .
   statementn;
}

for循环例程:

#include <stdio.h>
/* 使用for循环打印5次"hello" */

int main()
{
    int count;

    for(count=0;count<5;count++)
    {
        printf("\nhello");
    }
    return 0;
}

while循环

while循环用于这样的场景:当一个条件为真(True)时,就执行语句块,否则不执行。
语法如下:

while(condition)
{
    statement1;
    statement2;
    .
    .
    statementn;
}

for循环的语法,使用while来实现如下:

表达式1;         /*初始化*/
while(表达式2)  /*条件表达式*/ 
{
    statement1;
    statement1;
    .
    .
    statementn;
    表达式3;      /*递增或递减*/
}

while循环例程:

#include <stdio.h>
/* 使用while循环打印5次"hello" */
 
int main()
{
    int count=0;
 
    while(count<5)   /* 相当于for循环的: for(;count<5;)*/
    {
        printf("\nhello");
        count++;
    } 
    return 0;
}

do-while循环

不管条件是真(True)还是假(False),语句都需要执行一次。这种情况就可以使用do-while循环控制方法。

do-while循环控制方法是必须在条件检查之前执行一次语句。它的语法如下:

do
{
    statement1;
    statement2;
    .
    .
    statementn;
    表达式3;      
}while(condition);

do-while循环例程:

#include <stdio.h>
/* 使用do-while循环打印5次"hello" */

int main()
{
    int count=0;
 
    do
    {
        printf("\nhello");
        count++;
    }while(count<5);   /* 相当于for循环的: for(;count<5;)*/
    return 0;
}
下一节