循环机构程序设计
章节结构
- 为什么需要循环
- 用while语句实现循环
- 用do...while语句实现循环
- 用for语句实现循环
- 几种循环的比较
- 改变循环执行的状态
- 循环程序举例
用while语句实现循环
while语句的一般形式: while (表达式) 语句
语句就是循环体。
表达式也称为循环条件表达式。执行循环体的次数就是由循环条件控制的。
while语句:只有当循环条件表达式为真(即给定的条件成立),就执行循环体语句。
while循环的特点:先判断条件表达式,后执行循环体语句。
while语句:在执行while语句时,先检查循环条件表达式的值,当为非0值(即真)时,就执行while语句中的循环体语句;当表达式为0(假)时,不执行循环提语句。
用do...while语句实现循环
do...while语句的一般形式:
do
语句
while (表达式)
语句就是循环体。
do...while语句的特点:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为**非零(“真”)**时,返回重新执行循环体语句,如此反复,直到表达式的值等于“0”(“假”)为止,此时循环结束。
用for语句实现循环
for语句的一般形式
for(表达式1;表达式2;表达式3;)
语句
表达式1:初始条件,只执行一次。可以为零个、一个或多个变量设置初值
表达式2:循环条件表达式,用来判断是否继续循环。在每次执行循环体前先执行此表达式,决定是否继续执行循环。
表达式3:循环迭代,作为循环的调整,例如使循环变量增值,它是在执行完循环体后才进行的。
语句:循环体
执行顺序:初始条件——循环条件表达式——循环体——循环迭代——循环条件表达式——循环体——循环迭代
-
表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔。
-
逗号表达式内按自左至右顺序求解,整个逗号表达式的值为最右边的表达式的值。
for循环的相关应用
-
每读入一个字符后立即输出该字符,直到输入一个“换行”为止。
for(;(c = getchar()) != '\n';) printf("%c",c);
-
不断输入字符,将它们的ASCII码相加,直到输入一个“换行”符为止。
for(i=0;(c = getchar()) != '\n';i+=c );
for九 for一般(形式),1省,2省,3也省;1、3省了,都可省;1可以是循环变量初值的赋值表达式,也可以不是;1、3可简可逗
- (1) for语句的一般形式如下:
for(表达式1;表达式2;表达式3) 语句
可以改写为while循环的形式:表达式1;while 表达式2 {语句;表达式3}
- (2) “表达式1”可以省略,即不设初值,单表达式1后的分号不能省略。
- (3) 表达式2也可以省略,即不用表达式2来作为循环条件表达式,不设置和检查循环的条件。
此时循环无终止地进行下去,也就是认为表达式2始终为真- (4) 表达式3也可以省略,但是程序设计者应另外设法保证循环能正常结束。
否则循环提无止境地执行下去- (5) 如果表达式1和表达式3都没有,只有表达式2,即只给循环条件
- (6) 可以将3个表达式都可省略,这也会无终止的执行循环体语句
- (7) 表达式1可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式
- (8) 表达式1和表达式3可以是一个简单的表达式,也可以是逗号表达式,即包含一个以上的简单表达式,中间用逗号间隔
在逗号表达式内按自左至右的顺序(左结合性)求解,整个逗号表达式的值为最右边的表达式的值,同时注意前一个会对后一个表达式产生影响
for(i=0;i< 5;i++,i++)
等价于for(i=0;i< 5;i = i + 2)
- (9) 表达式2一般是关系表达式或逻辑表达式,但也可以是数值表达式或字符表达式,只要其值为非零,就执行循环体
常见的两个for循环判断条件
for(i = 0;(c = getchar()) != '\n'; i+=c)
其作用是不断输入字符,将它们的ASCII码相加,直到输入一个“换行”符为止for(;(c = getchar()) != '\n';) printf("%c",c);
作用是每读入一个字符后立即输出该字符,直到输入一个“换行”为止
循环的嵌套
一个循环体内又包含另一个完整的循环结构,称为循环的嵌套。内嵌的循环中还可以嵌套循环,这就是多层循环
几种循环的比较
-
(1)在while循环和do...while循环中,只在while后面的括号内指定循环条件,因此为了循环能正常结束,应在循环体中包含使循环趋于结束的语句
-
(2)而for循环可以在表达式3中包含使循环趋于结束的操作,甚至可以将循环体中的操作全部放到表达式3中。因此for语句的功能更强,凡用while循环能完成的,用for循环都能实现。
-
(3)用while和do...while循环时,循环变量初始化的操作应在while和do...while语句之前完成。而for语句可以在表达式1中实现循环变量的初始化。
-
(4)while循环、do...while循环和for循环都可用break语句跳出循环,用continue语句结束本次循环。
改变循环执行的状态
用break语句提前终止循环
两个作用:
-
(1)用break语句可以使流程跳出switch结构,继续执行switch语句下面的一个语句。
-
(2)break语句还可以用来从循环体内跳出循环体,即提前结束循环,接着执行循环下面的语句。
用continue语句提前结束本次循环
不终止整个循环的操作,而只是提前结束本次循环,而接着执行下次循环,这时就可以使用continue语句。
break语句和continue语句的区别
continue语句只结束本次循环,而不是终止整个循环的执行。
而break语句则时结束整个循环过程,不再判断执行循环的条件是否成立。