第六章 循环控制
本章要点
循环的基本概念
不同形式的循环控制
多重循环问题
6.1 概述
求:
方法一(用if语句和goto语句构成循环)
#include<stdio.h>
void main( )
{
int i,sum=0;
i=1;
loop:
if(i<=100)
{
sum=sum+i;
i++;
gotoloop;
}
printf("%d\n",sum);
}
方法二(用for语句实现循环)
for语句的执行过程:
(1) 先求解表达式1。
(2) 求解表达式2,若其值为真(值为非0),则执行for语句中指定的内嵌语句,然后执行下 面第(3)步。若为假(值为0),则结束循环,转到第(5)步。
(3) 求解表达式3。
(4) 转回上面第(2)步骤继续执行。
(5) 循环结束,执行for语句下面的一个语句
#include <stdio.h>
void main()
{
int i,sum=0;
for(i=1;i<=100;i++)
{
sum=sum+i;
}
while(i<=100);
printf("%d\n",sum);
}
方法三(while语句实现循环)
解题思路:while语句用来实现“当型”循环结构。
一般形式:while (表达式) 语句
当表达式为非0值时,执行while语句中的内嵌语句。其特点是:先判断表达式,后执行语句。
#include<stdio.h>
void main()
{
inti,sum=0;
i=1;
while(i<=100)
{
sum=sum+i;
i++;
}
printf("%d\n",sum);
}
方法四(用do-while语句实现循环)
解题思路
do-while语句的特点:先执行循环体,然后判断循环条件是否成立。
一般形式: do
循环体语句
while (表达式);
执行过程:先执行一次指定的循环体语句,然后判别表达式,当表达式的值为非零(“真”) 时,返回重新执行循环体语句,如此反复,直到表达式的值等于0为止,此时循环结束。
#include<stdio.h>
void main()
{
inti,sum=0;
i=1;
do
{
sum=sum+i;
i++;
}
while(i<=100);
printf("%d\n",sum);
}
6.2 循环的嵌套
6.2.1 break语句
循体内又包含另一个完整的循环结构称为循环的嵌套。内嵌的循环中还可以嵌套循环,就是多层循环。
三种循环(while循环、do-while循环和for循环)可以互相嵌套。
当break语句用于do-while、for、while循环语句中时,可使程序终止循环而执行循环后面的语句,通常break语句总是与if语句联在一起,即满足条件时便跳出循环。
注意:
break语句对if-else的条件语句不起作用;在多层循环中,一个break语句只向外跳一层。
例:
float pi=3.14159;
for(r=1;r<=10;r++)
{
area=pi*r*r;
if(area>100) break;
printf(″r=%f,area=%f\n″,r,area);
}
说明:程序的作用是计算r=1到r=10时的圆面积,直到面积area大于100为止。从上面的for循环可以看到:当area>100时,执行break语句,提前结束循环,即不再继续执行其余的几次循环。
6.2.2 continue语句
作用为结束本次循环,即跳过循环体中下面尚未执行的语句,接着进行下一次是否执行循环的判定.
一般形式:
continue;
例如:
#include <stdio.h>
int main(void)
{
int i=0;
char c;
while(1){ /*设置循环*/
c='\0'; /*变量赋初值*/
while(c!=13&&c!=27){ /*键盘接收字符直到按回车或Esc键*/
c=getch();
printf("%c\n", c);
}
if(c==27)
break; /*判断若按Esc键则退出循环*/
i++;
printf("The No. is%d\n", i);
}
printf("The end");
return 0;
}
6.2.3continue语句和break语句的区别
continue语句只结束本次循环,而不是终止整个循环的执行。
while(表达式1) for
{ …
if(表达式2) continue;
…
}0
continue语句的作用是跳过循环体中剩余的语句而强行执行下一次循环。continue语句只用在for、while、do-while等循环体中,常与if条件语句一起使用,用来加速循环。
#include <stdio.h>
int main(void)
{
char c;
while(c!=13)
{ /*不是回车符则循环*/
c=getch();
if(c==0X1B)
continue; /*若按Esc键不输出便进行下次循环*/
printf("%c\n",c);
}
return 0;
}
6.3 几种循环的比较
(1)四种循环都可以用来处理同一问题,一般情况下它们可以互相代替。但一般不提倡用goto型循环。
(2)在while循环和do-while循环中,只在while后面的括号内指定循环条件,因此为了使循环能正常结束,应在循环体中包含使循环趋于结束的语句(如i++,或i=i+1等)。
概括起来,C语言有四种循环:goto语句构成的循环、while循环、do-while循环和for循环。
四种循环的比较:
四种循环都可以用来处理同一个问题,一般可以互相代替。但一般不提倡用goto型循环,不但因为其蹩脚,我们也极力建议不要使用goto语句,尽量使用其他语句代替。
① while和do-while循环,循环体中应包括使循环趋于结束的语句。
② for语句功能最强,也最常用。
③ 用while和do-while循环时,循环变量初始化的操作应在while和do-while语句之 前完成,而for语句可以在表达式1中实现循环变量的初始化。
总结:for循环是最常用的循环,它的功能强大,可以代替其他循环。
联系客服