循环结构是程序设计中的核心概念,它允许代码重复执行一段特定的操作,直到满足某个特定条件为止。本节主要探讨了两种常见的循环结构:while语句和do-while语句。
while语句是最基本的循环结构之一。其一般形式为:
```c
while(表达式) {
语句;
}
```
在执行过程中,首先会判断表达式的值,如果为真(非零),则执行循环体内的语句,之后再次检查表达式,如此反复,直至表达式为假(零)时退出循环。在设计while循环时,必须确保循环能够适时终止,避免形成无限循环,也称为死循环。
例如,例5.1展示了一个简单的while循环,用于累加前三个整数的和。在循环开始前,变量`s`初始化为0,`i`初始化为1。当`i`小于或等于3时,循环继续,每次循环`s`增加`i`的值,`i`自增1,直至`i`不再满足条件,循环结束,输出结果`s=6,i=4`。
接着,我们讨论了与循环控制相关的三个要素:初始值的设定、循环条件的判断以及循环变量的更新。这些要素在设计任何循环结构的程序时都至关重要。
例5.2是一个迭代算法的应用,用于计算50个学生的平均成绩。迭代算法是一种通过不断更新变量来达到目标的方法,关键在于初值、迭代方式和迭代条件。在这个例子中,初值为成绩总和`sum`为0,学生数量`n`为1;迭代方式是每次读入一个成绩并累加到`sum`,同时`n`自增1;迭代条件是学生数量不超过50。
例5.3展示了寻找一组数中最大值的迭代过程,采用“打擂台”的策略,每次比较当前最大值与新输入的数值,将较大者作为新的最大值。
例5.4用迭代法求解两个正整数的最大公约数(GCD),使用了“辗转相除法”(欧几里得算法)。迭代公式是根据余数不断更新被除数和除数,直到余数为0,此时的除数即为最大公约数。
接下来,我们转向do-while语句,它与while语句类似,但不同之处在于do-while语句的条件检查是在循环体执行后进行的,确保至少执行一次循环。do-while语句的一般形式如下:
```c
do {
语句;
} while(表达式);
```
如例5.5所示,即使`i<=3`的条件在开始时不满足,do-while循环也会执行一次,然后检查条件是否成立。
例5.6展示了如何使用do-while循环求解一个分数数列的前20项之和。这个数列遵循斐波那契序列规则,每项等于前两项之和。通过迭代,更新分子`b`、分母`a`和和`sum`,直到达到20项。
循环结构在程序设计中扮演着重要角色,无论是while语句还是do-while语句,都是为了实现重复执行任务,而迭代算法则是利用循环结构解决问题的有效方法。理解和熟练掌握循环结构及其应用,对于编写高效、准确的程序至关重要。