“循环”这个词在我们日常生活中经常遇到,例如:循环播放某一首歌曲;就是一直在做某一件事情,重复地做某一件事情。那么,在C语言中,提供了“循环”控制语句,也是一样的道理,就是重复做某一件事情。
例如,当我们循环播放某一首歌曲,听腻了的时候,我们可以选择停止播放。所以,对于“循环”控制语句,也应该提供“停止循环”的机制。
计算机程序的优点,就是可以循环、不停地做某一件事情,所以,在程序设计中,循环控制是一种非常重要的控制语句。C语言提供了多种循环控制语句,下面我们一一来学习。
while语句在C语言中,提供了while语句来进行循环控制。它的格式如下:
while(表达式) 循环语句;
该语句的执行流程是:
(1)步骤一:判断小括号中的表达式的值,如果表达式的值为真,则执行while后面的循环语句;如果表达式的值为假,则不执行循环语句,而且结束while语句的执行;
(2)步骤二:如果表达式的值为真,执行完循环语句之后,回到步骤一继续循环判断执行;
while语句的执行流程可以如下图所示:
所以,可以看到,如果表达式的值为真,那么,就一直执行循环语句。直到表达式的值为假的时候,才结束while()语句。如下是一个程序测试例子:
程序运行的结果如下:
我们来分析一下这个测试例子的执行过程:
(1) 定义 int 类型变量 i,它的值为3;
(2) 执行while(i--),那么,i--表达式的值是i变化之前的值,所以,i--表达式的值为3,此时,表达式的值为非0,所以,为真,执行循环语句。所以,执行循环体的循环语句:
printf("i = %d\n", i); //循环体执行的语句
输出i的值;由于已经执行了i--,所以,i变量的值为2,所以,输出 i = 2;
(3) 继续执行while(i--),此时,i的值为2,那么,i--表达式的值为i变化之前的值,所以,i--表达式的值为2;是非0值,所以,为真,继续执行循环语句,输出i变量的值;由于执行了i--,所以,i变量的值为1,所以,输出i = 1;
(4) 继续执行while(i--),此时,i的值为1,那么,i--表达式的值为i变化之前的值,所以,i--表达式的值为1;是非0值,所以,为真,继续执行循环语句,输出i变量的值;由于执行了i--,所以,i变量的值为0,所以,输出i = 0;
(5) 继续执行while(i--),此时,i的值为0,那么,i--表达式的值为i变化之前的值,所以,i--表达式的值为0;是0值,所以,为“假”;此时,while(表达式)中的表达式的值为“假”,那么,就结束while循环的执行。
所以,就不执行循环语句,而且结束while循环语句。
那么,我们可以总结,对于while循环语句,如果while(表达式)中的表达式值为真,那么,就执行循环语句。如果表达式的值为假,就不执行循环语句,而且结束while语句的执行。
在上面的例子中,我们执行的循环语句只有一条,那么,如果想要循环执行多条语句,应该怎么样?
如果要想循环执行多条语句,可以使用大括号{}把多条语句包含起来,作为while循环的执行体,那么,就可以循环执行多条语句,定义的格式如下:
while(表达式)
{
循环语句1;
循环语句2;
…
循环语句N;
}
那么,就有:
(1) 如果表达式的值为真,就执行大括号{}定义的循环体,执行循环体中定义的循环语句;执行完循环体中的循环语句之后,继续判断表达式的值。
(2) 如果表达式的值为假,就不执行循环体中的循环语句,而且结束while语句的执行。