一.概述
C语言提供了多种循环语句,可以组成各种不同形式的循环结构。
(1)用 goto 语句和 if 语句构成循环
(2)用 while 语句
(3)用 do-while 语句
(4)用 for 语句
二.goto 语句及构成的循环
goto 语言是一种无条件转移语句,
goto 语句的使用格式: goto 语句标号;
其中标号是一个有效的标识符,这个标识符加上一个“:”一起出现在函数内某处, 执行goto 语句后,程序将跳转到该标号处并执行其后的语句。另外标号必须与 goto 语句同处于一个函数中,但可以不在一个循环层中。
通常 goto 语句与 if 条件语句连用, 当满足某一条件时, 程序跳到标号处运行。
注意:goto 语句通常不用,主要因为它将使程序层次不清,且不易读,但在多层嵌套退出时,用 goto 语句则比较合理。
三.while 语句
while 语句的一般格式:while (表达式) 语句
语句的语义是:计算表达式的值,当值为真(非0)时,执行循环语句。
例如:
#include <stdio.h>
int main()
{
int a=0,n;
printf("\n input n: ");
scanf("%d",&n);
while (n--)
printf("%d ",a++*2);
return 0;
}
四.do-while语句
do-while语句的一般表达式:
do
语句
while (表达式);
这个循环与 while 循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真, 如果为真则继续循环;如果为假, 则终止循环。因此, do-while 循环至少要执行一次循环语句。
注意:while 和 do-while 循环比较
(1)while语句
#include <stdio.h>
int main()
{
int sum=0,i;
scanf(“%d”,&i);
while(i<=10)
{
sum=sum+i;
i++;
}
printf(“sum=%d”,sum);
return 0;
}
(2)do-while语句
#include <stdio.h>
int main()
{
int sum=0,i;
scanf(“%d”,&i);
do
{
sum=sum+i;
i++;
}
while(i<=10);
printf(“sum=%d”,sum);
return 0;
}
五.for语句
在 C 语言中,for 语句使用最为灵活,它完全可以取代 while 语句。
它的一般形式为:
for(表达式1;表达式2;表达式3) 语句
它的执行过程如下:
(1)先求解表达式 1。
(2) 求解表达式 2,若其值为真(非 0),则执行 for 语句中指定的内嵌语句,然后执行下面第 (3)步;若其值为假(0),则结束循环,转到第 (5)步。
(3)求解表达式 3。
(4) 转回上面第 (2)步继续执行。
(5)循环结束,执行 for 语句下面的一个语句。
for语句最简单的应用形式是:
for (循环变量赋初值;循环条件;循环变量增量)语句
循环变量赋初值总是一个赋值语句, 它用来给循环控制变量赋初值; 循环条件是一个关系表达式,它决定什么时候退出循环;循环变量增量,定义循环控制变量每循环一次后按什么方式变化。这三个部分之间用“;”分开。
例如:
for(i=1; i<=100; i++)
sum=sum+i;
先给 i 赋初值 1,判断 i 是否小于等于 100, 若是则执行语句,之后值增加 1。再重新判断,直到条件为假,即 i>100 时,结束循环。
注意:
1.for 循环中的“表达式1(循环变量赋初值)”,“表达式2(循环条件)”,“表达式3(循环变量增量)”,都是选项项,即可以缺省,都是 “;”不可以缺省;
2.省略了“表达式1(循环变量赋初值)”,表示不对循环控制变量赋初值;
3.省略了“表达式2(循环条件)”,则不做其它处理时便成为循环;
4.省略了“表达式3(循环变量增量)”,则不对循环控制变量进行操作,这时可在语句体中加入修改循环控制变量的语句;
5.省略了“表达式 1(循环变量赋初值)”和“表达式 3(循环变量增量)”。
例如:
for(;i<=100;)
{
sum=sum+i;
i++
;}
相当于:
while(i<=100)
{
sum=sum+i;
i++;
}
6.3 个表达式都可以省略。
例如:
for(;;)
相当于:
while(1)
六.循环的嵌套
例如:
#include <stdio.h>
int main()
{
int i, j, k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf(“%d %d %d\n", i, j, k);
return 0;
}
七.break 和 continue 语句
break 语句通常用在循环语句和开关语句中。当 break 用于开关语句 switch 中时,可使程序跳出 switch 而执行 switch 以后的语句;如果没有 break 语句,则将成为一个死循环而无法退出。
continue 语句的作用是跳过循环本中剩余的语句而强行执行下一次循环。continue 语句只用在 for、while、do-while 等循环体中,常与 if 条件语句一起使用,用来加速循环。
(1) while(表达式 1)
{ ……
if(表达式 2) break;
……
}
(2) while(表达式 1)
{ ……
if(表达式 2)continue;
……
}