C语言程序设计
湛江师范学院陈其嶙
alinxx@
第十一课循环结构- while 语句
§ 循环(重复)
前面几章介绍的程序在演示 C 程序的正确结构,以及构造基本的 C 输入、输出、赋值和选择功能方面是非常有用的。
大多数程序的实际功能主要表现在它们多次重复相同的计算或指令序列的能力上,即每次使用不同的数据,而不必针对每组新的数据值重新运行程序,本章将介绍实现该功能的 C 语句,包括 while、for 和 do-while 语句。
while 语句是一种最常见的重复语句,它可以用于各种编程情况下。while 语句的常规格式如下所示:
while(条件)
语句; 圆括号内的“条件”与 if-else 语句中的条件的赋值方式完全相同,不同的是条件的使用方式。当 if-else 语句中的条件成立时,将执行一次该条件后的语句。在 while 语句中,只要条件仍保持成立,就会反复执行条件后的语句,这自然意味着,在 while 语句的某些地方,必须有一个将测试条件的值更改为 false 的语句,这实际就是情况(Case)。目前我们只考虑条件和圆括号后的语句。
§ while 语句格式
计算机执行 while 语句的过程如下所示:
(1)测试条件。
(2)如果条件具有非0(true)值:
①执行圆括号后的语句;
②回到步骤(1)。
否则
退出 while 语句。
§ while 语句执行流程
请注意,步骤(2)中的②将强制把程序的控制转回给步骤(1)。这种将控制转回 while 语句的开始以重新为条件赋值的方式就是程序循环的方式。while 语句实际上是在做自身循环,以重新检查条件,直到它变得不成立,即在循环过程的某些地方必须要更改所测试的条件的值,这实际上就是情况(case)。
为了更清楚一些,请考虑关系条件 count<=lO 和语句printf(“%4d”,count);,使用它们,我们可以编写下面有效的while语句:
while( count <= 10 )
printf("%4d",count);
虽然该语句是有效的,但细心的读者将意识到,我们创建了一种或是一直调用 printf()方法(直到我们终止程序)或是根本不调用它的情况。
如果在首次条件赋值时,count 的值小于或等于lO,那么将调用 printf()方法,然后,while 语句将自动回过头来重新测试条件。因为我们没有更改 count 中存储的值,所以条件仍是成立的,因此将再次调用 printf(),这个程序将永远继续下去,直到用户终止运行包含该语句的程序。但是,如果count是从一个大于 10 的值开始,那么条件将是不成立的,因此根本不会调用 printf()。
§ while 语句应用
我们该如何设置 count 的初始值,来控制在首次为条件赋值时 while 语句所实现的功能呢?回答是在遇到 while 语句之前,为所测试的条件中的每个变量赋值,例如,下面的指令顺序是有效的:
count = 1; //控制变量赋初值
while( count <= 10 )
printf("%4d",count);
使用这个指令序列,我们可以确保 count 的初始值为 1。我们可以在赋值语句为 count 指定任何值——重要的是要指定“某些”值。实际上,指定的值要取决于应用程序。
§ while 语句应用-变量赋初值
我们仍需要更改 count 的值才能最终退出 while 语句,这需要使用像 count=count+l 这样的条件,在每次执行 while 语句时都递增 count 的值。事实是,用于重复单个语句的 while 语句不会妨碍我们使用其他语句来更改 count 的值,我们所要做的就是使用复合语句来替代单个语句,例如:
count = 1; //将 count 初始化
while( count <= 10 )
{
printf("%4d",count);
count++; //将count递增
}
现在让我们来分析一下这组完整的指令的工作方式。第一个赋值语句将 count 设置为1。然后,进入 while 语句,条件第一次得到赋值。因为 count 的值小于 10,所以条件成立,并执行复合语句。复合语句中第一个语句是调用 printf()方法来显示 count 值。接下来的语句是将 count 中当前存储的值加上 1,使该值等于 2。现在 while 语句循环回来重新测试条件,因为 count 的值仍小于 10,所以将再次执行复合语句,该过程将一直持续到 count 的值达到 11。
§ while 应用-
C语言-11PPT课件 来自淘豆网m.daumloan.com转载请标明出处.