C语言的基本结构之一。在程序中有连续执行的操作可以用循环结构,简化函数,C语言中有三种循环结构,for循环,while循环,do-while循环,其中for循环最常用。
循环执行是循环结构的核心,表现为反复执行一个或一组操作。在编程中,如果想要从数据处理中发现循环执行,就要分析程序的执行结果与数据的处理过程。
大部分程序在处理数据后,都有明确的执行结果。从程序的执行结果的表现形式和数量构成,往往可以找到重复执行的“痕迹”。
部分程序处理数据后没有明确的结果,或者结果非常简单,无法对其进行分析。这个时候,可以分析数据的处理过程,从中发现重复操作的规律。
对于循环执行,一定要注意循环操作的终止条件,避免出现无意义的无限循环,也就是死循环,终止条件用于限制循环操作的无限执行,规定什么时候结束循环操作,如果没有会导致程序出现问题。
一个完整的循环包括四个部分:初始化部分、判断部分、循环部分、迭代部分
初始化部分用来描述循环操作前的基本情况。在程序中,初始化部分一般由各种初始条件和额外的计数器组成。在C语言中,计数器一般使用变量i、j、k表示,完整准确的初始化才能保证程序的正常进行。
判断部分又称终止部分,用来在每次进行循环操作之前或者之后判断是否完成目标任务。
循环部分是指反复执行的操作部分,其中可能是极其简单的操作,也可能是复杂的。
迭代部分是指用于修改关键状态,而该状态参与判断部分的处理。如果确实这个部分,就有可能陷入死循环。
C语言中最常用,最严格,功能最强的循环语句
由初始条件,判断条件,迭代条件及循环体四个部分组成
for(初始条件;判断条件;迭代条件)
{
循环体;
}
(1)初始条件可以初始化环境,用于确定具体的起始循环环境。
(2)判断条件用于判断是否满足条件,如果满足,执行循环体,如果不满足,跳出循环。
(3)迭代条件用于改变参与判断条件的值,只有判断条件的值不断改变,才能推动循环语句的进行,避免陷入死循环。
(4)循环体就是指循环执行的具体内容。
for循环语句在每次循环时都要做一次条件判断,如果判断结果为假,则跳出循环,如果为真继续循环
首先从初始条件进入循环语句。然后进行判断条件,进行判断如果为真则进入循环,循环结束则进行迭代条件,之后再次进入判断条件判断是否真假,依此类推,直至判断条件为假跳出循环
for循环语句的简化形式是指将小括号中的初始条件与迭代条件省略,只保留判断条件 (但是分号不可略)
for(;判断条件;)
{
循环体;
}
当for循环语句的循环体是单条语句时,可以省略{}
在C语言中,while循环语句实际上就是for循环语句的简化形式的另外一种写法,也属于当型循环语句。
while循环语句是指当判定条件成立时,执行指定语句。
while循环语句的语法如下:
while(判定条件)
{
循环体;
}
其中,判定条件可以是关系表达式(隐式关系表达式)或逻辑表达式,用于控制循环的次数,循环体可以为语句或语句块,为循环语句执行的具体内容。
判断条件不可以被省略
while循环语句在每次循环时都要做一次条件判断,如果判断结果为真则进入循环,若为假,跳出循环;
直到型循环是常用的循环结构形式。它是先运行循环体,在进行条件判断。这种形式中,如果满足条件,则再次运行循环体;如果不满足,则跳出循环体。简而言之,直到型循环就是先执行后判断。
do-while循环语句是先执行循环体,直到判断条件不满足时结束循环。
do
{
循环体
}while(判断条件);
其中循环体可以是单条语句也可以是语句块,会被直接执行;判断条件可以是关系表达式(隐式关系表达式)或逻辑表达式,且不可以被省略;判断条件后的分号代表do-while循环语句的结束,不可省略
do-while循环语句会先执行循环体,然后对判断条件进行判断。根据判定结果选择是否再次执行循环体。
do-while循环语句中的循环体至少会被执行一次
循环跳转是指再执行循环语句过程中跳出循环语句或跳转到指定位置。循环跳转是在特殊情况下的备用选择。在C语言中,循环跳转包含3种,分别为跳出循环、跳出当前循环以及跳转到指定位置 。
跳出循环是指跳出当前循环语句,不再执行循环语句。在C语言中,使用break语句来实现跳出循环
跳出当前循环是指跳出本次循环语句,并尝试再次进入循环语句。在C语言中,使用contine语句来实现跳出当前循环。
跳转至指定位置是指直接跳转到一个预先指定位置。在C语言中,使用goto语句来实现跳转到指定位置。
goto 标号;
标号:
goto语句由两部分组成:第一部分由关键字goto与标号组成,表示跳转到开始位置;第二部分由标号与冒号组成,表示跳转到目的位置。
标号是按标识符规定书写的符号;标号与冒号组成标识语句。
嵌套循环是指为了完成复杂的循环,将多个循环语句进行相互嵌套。在C语言中,嵌套循环包括普通嵌套与复杂嵌套循环两种方式。
普通嵌套循环是将循环语句直接嵌套使用,循环语句之间互不影响。
for(i=1;i<4;i++)
{
for(j=1;j<=3;j++)
{
printf("%d\n",j);
}
printf("-------------\n");
}
复杂嵌套循环是指外层循环的迭代条件会影响到内层循环的判断条件。复杂嵌套循环与普通嵌套循环的执行流程是一样的。
在使用复杂嵌套循环时,避免死循环