循环结构也称重复结构, 是指在程序执行过程中需要反复执行的程序段。
循环语句有三种:
while语句
for语句 无条件循环
do—while语句
C语言中 三种循环结构 本质上都可以相互转换。只有合适的场景下用合适的循环
一.while 循环
while语句用来实现“当型”循环结构
格 式:
While(循环结束条件)
{
多条语句;
更改循环变量
}
特点: 先判断, 再执行, 有可能一次也不执行。
说明:
1. 表达式必须用一对圆括号括起来, 如果循环体包含一条以上的语句应用花括号括起来。
2. 在循环体内必须修改循环变量的值, 否则死循环。
3. 在循环体中, 循环变量的值可以被引用、修改,但不能另赋新值。
4.若表达式只用来表示等于零或不等于零的关系时, 条件表达 式可以简化成如下形式:
while (x!=0) 可写成 while (x)
while (x==0) 可写成 while (!x)
5. 循环体通常是一个复合语句, 但也可以是一个空 语句或单个语句。
如: 空语句: while (x++<10000) ; //分号不能省
单语句: x=10 ; while(x-->0)printf(“%d”, x);
二 for循环
格式:
for(循环变量赋初值;循环结束条件;更改循环变量)
{
语句块;
}
(1) 省略表达式1, 此时应在for语句之前给循环变量赋初值, 并且分号不能省略。
如: i=1 ;
for ( ; i<=100 ; i++)
(2)省略表达式2, 则认为循环条件始终为真, 程序将陷入死循环。
如: for( i=1 ; ; i++ )
{
sum+=i ; if (i>=100) break;
}
(3)表达式3可省略, 此时应在循环体内对循环变量进行修改, 以保证循环能正常结束。
如, 求和运算: for ( i=1 ; i<=100; ) //分号不能省略
sum+=i++ ; //修改循环变量
(4)三个表达式都省略, 此时应在循环体内对循环变量进行修改, 用break语句终止循环。
如, 求和运算: i=1 ;
for ( ; ; )
{ sum+=i++ ;
if ( i >100 ) break ; }
(5)表达式1、3都可以有一项或多项, 若有多项则使用逗号表达式。
如, 求和运算: for ( s=0, i=1 ; i<=100; i++) s+=i ;
for (s=0, i=1; i<=100; s+=i, i++) ;
本质执行顺序是相同的,while循环一般用于不知道循环次数的时候,
如果使用for循环 也可以做,但是 for( ; ; )会造成for循环头中有一个部分缺省
求一个输入数字的每一个组成数组 for(输入的无需再次赋值;结束条件;)
如果for循环头三个表达式都为空 和 while(1) 是一样的
特点:先判断, 再执行, 有可能一次也不执行。
do-while循环
do-while语句用来实现“直到型”循环结构
格式: do 循环体语句 while(<表达式>) ;
循环的嵌套
在一个循环体内又包含有一个或多个完整的循环结构, 称为循环的嵌套。内嵌的循环中还可以嵌套循环即为多重循环。
说明 1) 嵌套要完整,不能交叉
2)并列的循环变量可以同名, 但嵌套的循环变量不允许同名
3)可以用break语句从内循环跳转到外循环, 但不允许从循环体外跳转到循环体内。
一般的我们称一层循环的复杂度为n那么双层循环时间复杂度为n^2
break语句
格式: break ;
作用: 提前退出某个循环或跳出switch结构。 退出当前switch语句 退出当前循环(在循环体中break语句与if语句搭配使用)
continue语句
格式: continue ;
作用: 结束本次循环, 不在执行continue语句之后的循环体 语句, 使程序回到循环条件, 接着进行下一次是否执行 循环的判定。
说明: 只能用于循环结构中, 常与if语句联合起来使用, 以便 在满足条件时提前结束本次循环。
注意: 在while和do-while结构中, 在continue语句被执行 之后立即进行循环条件的测试;
在for结构中, 表达式 3被执行之后,然后进行循环条件的测试。
break 与 continue 的区别
循环必须注意:
1,while循环容易编写出错。两个while循环并列的时候,因为第一个while循环,已经把循环变量给改了,当运行第二个循环的时候,别忘记初始化。
2,for循环因为第一个表达式就是循环变量初始化的位置,所以程序员不会忘记写,出错几率小一些。同时,我们要记住for循环的执行次序。
3,三条循环语句可以互相替代使用,但是还是有一些方便性的差别。for循环常用于有明确的开始值和结束值和循环变量的步长。
while 循环常用于不容易知道开始值和结束值和步长的情况,循环次数是根据中间运算结果决定的。这种情况,有可能一次都不执行,这样的情况。
`` do while 循环常用于不容易知道开始值和结束值和步长的情况,循环次数是根据中间运算结果决定的而且,至少需要先执行一次,这样的情况。
4,while 和 for 是先判断然后执行的,我们叫他当型循环。do while 是先执行然后判断的,我们叫他直到型循环。