C语言:while与do while循环语句

while 

执行流程:先判断循环控制表达式 Exp_cntrl 的值,当该表达式的值为逻辑真(非 0)时,会一直执行循环体,直到表达式的值为逻辑假(0)才结束循环。
 



通常把循环控制表达式 ExP_cntrl 中含有的变量,称为循环控制变量。为了避免程序陷入死循环,必须要有能改变循环控制变量的语句,使循环控制表达式 Exp_cntrl 的值趋于逻辑假,以便使循环趋于终止。

【例 1】统计输出 100 以内的所有奇数之和。

分析:本题是重复执行“把 100 以内的当前奇数 1、3、5、7,… 累加求和”的相似操作,故采用循环结构。循环算法的关键是要确定循环条件表达式和循环体。

循环控制变量及初始条件确定:由题意可知,奇数 i 作为循环控制变量,初值为第一个奇数,即 i=1。另外,还有求和变量 sum=0。

循环条件表达式的确定:循环控制变量 i 为 [1,100] 间的奇数。故循环条件表达式为 i<=100。

循环体确定:该题循环体中包含以下两部分操作。

  • 把当前奇数变量 i 累加到求和变量 sum 中,即 sum+=i;
  • 为计算当前奇数的下一个奇数做准备,也就是控制变量的增量部分,即 i+=2。



代码如下:

 #include<stdio.h>

int main (void){

int sum=0,i=1; //i初始为第一个素数

while (i<=100) //循环执行的判断条件

{

sum+=i;

i+=2; //控制变量的增量

}

printf("sum=%d\n",sum);

return 0;

}

运行结果为:
sum=2500

需要说明的是,必须在零的基础上进行累加,故 sum 需要初始化为 0,否则将是无意义的随机值。循环控制条件不必刻意去思考最后一个奇数是否包含 100,让程序根据奇数的定义及相邻奇数的差值自行计算确定 100 以内的最后一个奇数。

do-while循环

do-while 循环的格式如下。

do{
    Statement _1;
    Statement _2;
}while(Exp_cntrl);//分号不可丢

当循环体为一条简单语句时,可以省略 {},即:

do
    Simp1e_Statement;//循环体
while(Exp_cntrl);

注意,在 do-while 结构中,while 括号后的分号不能丟。

do-while 循环的执行流程是:首先无条件地执行一次循环体,然后再根据循环控制表达式的值来判断是否继续执行循环体。若为真,则继续执行;若为假,则停止执行,退出 do-while 循环。也就是说,do-while 循环至少执行一次循环体。

do-while 循环和 while 循环的主要差别是:前者至少执行一次循环体,后者有可能一次也不执行循环体。

d
o-while 循环的执行流程图



do-while 循环主要用在一直进行尝试性的操作,直到满足条件为止的情景。

【例 2】编程实现猜数字游戏,假设谜底为 0〜10 的整数,猜谜者每次输入一个整数,直到猜对为止。

分析:本题属于先输入所猜数字才能判断是否猜中,如果猜中,游戏结束,如果没猜中,继续猜,直到猜中为止。故该题符合 do-while 循环的使用场景。

代码如下:

#include<stdio.h>

int main (void){

int pwd=7,gs; //pwd:谜底

printf ("\tGames Begin\n");

do{

printf("Please guess (0~10):");

scanf("%d",&gs);

}while(gs!=pwd);

printf ("\tSucceed!\n");

printf ("\tGaines over\n");

return 0;

}

运行结果:
        Games Begin
Please guess (0~10):3
Please guess (0~10):5
Please guess (0~10):8
Please guess (0~10):7
        Succeed!
        Gaines over

猜你喜欢

转载自blog.csdn.net/weixin_44015669/article/details/89857738