您的位置:首页 > 编程语言 > C语言/C++

C语言的循环语句

2015-08-09 06:06 441 查看
循环语句是用于重复执行某条语句(循环体)的语句,它包含一个控制表达式,每循环执行一次都要对控制表达式进行判断,如果表达式为真,则继续执行循环。C语言提供了3中循环语句,分别为
while
语句,
do while
语句和
for
语句。

while语句

while语句是控制表达式在循环体之前的循环语句,它的格式如下:

while (表达式)
语句


这里的圆括号是强制要求的,圆括号之内的表达式为控制表达式,圆括号之外的语句为循环体。

while
语句的执行步骤,首先计算控制表达式的值,如果表达式的值不为
0
(为真),则执行循环体,接着再次判断控制表达式,如果其值不为
0
,再次执行循环体。执行这个步骤直到控制表达式的值为
0
时停止。

/*************************************
* using_while_1.c                   *
*                                   *
* 简单的while语句                   *
*************************************/

#include <stdio.h>

int main()
{
int i = 1;
int sum = 0;

while(i <= 50)
{
sum += i;
i++;
}

printf("1到50之间(包括1和50)的整数之和为%d\n", sum);

return 0;
}




如果
while
的控制表达式一直不为0,那么循环将一直进行下去,称为无限循环。这样的循环在循环体中都包含
break
,
goto
,
return
或者导致程序终止的函数(如
exit
等),以在适当的时机终止程序。

/****************************************
* using_while_2.c                      *
*                                      *
* 无限循环与break                      *
****************************************/

#include <stdio.h>

int main()
{
int i = 1;
int sum = 0;
while(1)
{
if ( i > 50)
break;

sum += i;

i++;
}

printf("1到50之间(包括1和50)的整数和为%d\n", sum);
return 0;
}




do while
语句

do while
语句与
while
语句非常相似,只不过
do while
语句在每次执行完循环体之后对控制表达式进行判断的,因此
do while
语句的循环体至少会执行一次,而
while
语句的循环体可能一次都不被执行。
do while
语句的格式如下:

do
语句
while(表达式);


其中控制表达式两端的括号也是必须的。

do while
循环的执行步骤如下:首先执行循环体,再计算控制表达式的值,如果表达式的值非零再继续执行循环体,然后再次判断表达式的值。这个过程持续进行,知道控制表达式的值为0,终止
do while
语句执行。

建议对
do while
的循环体都使用大括号包裹起来,因为大括号会使
do while
语句被误认为是
while
语句。

/*************************************
* using_do_while.c                  *
*                                   *
* C语言中的do while循环             *
*************************************/

#include <stdio.h>

int main()
{
int i = 1;
int sum = 0;

do
{
sum += i;
i++;
}while(i <= 50);

printf("1和50之间(包括1和50)的整数之和为%d\n", sum);

return 0;
}




for
语句

for
语句的格式如下:

for (表达式1; 表达式2; 表达式3)
语句


表达式1是初始化步骤,只执行一次,表达式2是控制表达式,控制循环的终止,表达式3在每次循环的最后被执行。

for
语句的执行步骤是:首先执行表达式1进行初始化,然后判断表达式2的值是否为真,若为真,则执行循环体,然后执行表达式3.随后再次对表达式2的值进行判断,若为真,则再次执行循环体和表达式3,依次循环直到表达式2的值为0为止。

for
语句的3个表达式都可以省略,若省略表达式1,则在执行循环前没有初始化的操作;若省略第三个表达式,则执行完循环体后,没有再需要执行的语句,循环体确保循环能够在有限时间内终止;若省略第二个表达式,则每次判断都默认为真,除非在循环体内使用
break
,
goto
和程序终止函数外,循环不会停止。

/*************************************
* using_for.c                       *
*                                   *
* C语言的for语句                    *
*************************************/

#include <stdio.h>

int main()
{
int sum = 0;

int i;

for (i = 1; i <= 50; i++)
{
sum += i;
}

printf("1和50之间(包括1和50)的整数之和为%d\n", sum);

return 0;
}




循环体中的跳转语句

在循环体中可以使用
break
continue
goto
跳转语句。

break
语句。

break
语句在循环体的中间设置退出点,用以跳出
while
do while
for
循环,直接执行循环语句后面的语句。除此之外,
break
语句还用于
switch
语句,用以跳出
switch
语句而直接执行switch语句后面的语句。对于嵌套的循环语句和(或)
switch
语句,
break
只能跳过其所在的那层循环或
switch
语句。

continue
语句。

continue
语句并不跳出循环,而是将程序执行正好转移到循环体末尾处,跳过本次循环中循环体余下的内容。
continue
语句只能用于循环体中。

/**************************************
* using_continue.c                   *
*                                    *
* C语言中用于循环体的continue语句    *
**************************************/

#include <stdio.h>

int main()
{
int n = 0;
int sum = 0;

while (n < 10)
{
int i = 0;
scanf("%d", &i);
if (i == 0)
continue;
sum += i;
n++;
}

printf("以上十个非零数的和为:%d\n", sum);

return 0;
}




goto
语句。

goto
语句不仅可以用在循环体中,还可以用在程序的任何位置。与
continue
break
不同,它可以跳转到同一个函数中任何有标记的语句处。
goto
依赖于定义在语句开头的标识符,其形式为:
标识符 : 语句
goto
语句的形式为:
goto 标识符;


goto
易于造成程序混乱,代码难以阅读,并且其他跳转语句、
return
exit
语句能够满足大多数需要
goto
语句的情况。除非万不得已,尽量不要使用。

/**************************************
* using_goto_in_loop.c               *
*                                    *
* C语言循环语句的循环体中使用goto语句*
**************************************/

#include <stdio.h>

int main()
{
int i = 0;

while (i < 10)
{
switch(i)
{
case 0:
case 1:
case 2:
case 3:
printf("%d 小于 4\n", i);
break;
default:
goto bigThan4;
}
i++;
}

bigThan4: printf("i开始不小于4\n");
return 0;
}




参考文献

K.N. King 著,吕秀峰 译. C语言程序设计-现代方法. 人民邮电出版社
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: