1、do while语句循环结构定义
do while语句循环结构的一般形式、流程图和执行过程如下:
注1:与前面一样,表达式可以是任意的,只要有值就行,遵循非0即真的原则。
注2:一个循环结构由四个要素构成:循环初始条件、循环判定条件、循环体和循环修正条件。循环初始条件就是循环结构的一些变量定义和初始化值设置,在上图语句的前面。循环判定条件就是上图中的判定表达式。循环体就是循环执行部分,包含在上图中的语句中。循环修正条件就是为了进入下一轮循环,需要改变循环条件,包含在上图中的语句中。
注3:do while语句循环结构中while(表达式)后面有一个;号,而while语句循环结构中while(表达式)后面是没有这个;号的,这个初学者经常会弄错的。
2、do while语句循环结构示例
还是上面那个题目:求1+2+3+...+100的值。
根据上述定义和注解,我们对于这个问题,首先分析其个要素如下:
循环初始化条件:i=1, sum=0; //从上面问题来看,主要有要加的数(第一个为1,即i=1)和加的结果(在加之前结果为0,即sum=0)。
循环判断条件:i<=100; //从上面问题来看,要加的数是从1~100的,也就是小于等于100的数就要加起来,即i<=100。
循环体: sum+=i; // 从上面问题来看,对于每一个从1开始且小于等于100的数都要加起来,即每个i都要加进sum中,即sum+=i。
循环修正条件: i++; //从上面问题来看,每一个加进sum的数是变化的,所以i要+1,即i++。
有了这个四素,接下来就是套用do while语句循环结构的一般形式就行,具体代码如下:
#include "stdio.h"
int main()
{
int i=1, sum=0; //循环初始条件
do{
sum+=i; //循环体
i++; //循环修正条件
}while(i<=100); //循环判定条件,另外这个;号不能少。
printf("1+2+3+...+100=%d",sum);
return 0;
}
3、与while语句循环结构的最大区别
从上面来看,do while语句循环结构除了形式上(把循环判定条件放在最后),好像与while语句循环结构没啥区别,输出结果也是一样的。
其实不然,do while语句循环结构在首次循环判定条件为假的情况下,至少执行一次循环体,而while语句循环结构不会。
还是上面那个问题,当i初始化值为101时,两个代码输出的结果就不一样。
(1)while语句循环结构
#include "stdio.h"
int main()
{
int i=101, sum=0; //循环初始条件
while(i<=100) //循环判定条件
{
sum+=i; //循环体
i++; //循环修正条件
}
printf("1+2+3+...+100=%d",sum);
return 0;
}
(2) do while语句循环结构
#include "stdio.h"
int main()
{
int i=101, sum=0; //循环初始条件
do{
sum+=i; //循环体
i++; //循环修正条件
}while(i<=100); //循环判定条件
printf("1+2+3+...+100=%d",sum);
return 0;
}
注:这个在有些至少需要执行一轮循环体的情况下适用。