while语句



while(表达式)
  语句

while(i<n)
  i = i * 2;



执行while时,先计算表达式的值,如果值不为零也就是所谓的真值,那么执行循环体,接着再次判定表达式。这个过程持续到表达式的值变成为零为止。



i = 1;
while (i<n)
 i = i * 2;

假设n的值是10,跟踪执行情况:

i = 1; i现在是1;
i < n成立吗? 成立就继续。
i = i * 2; i现在是2。
i < n 成立吗?成立继续。
i = i * 2; i现在是4。
i < n 成立吗?成立继续。
i = i * 2; i现在是8。
i < n 成立吗?成立继续。
i = i * 2; i现在是16。
i < n 成立吗?不成立,退出循环。



所以只有表达式i < n为真的情况下循环才会继续,当表达式为假的时候,循环终止。

如果表达式值始终为零,while语句无法终止



while(1)
 语句



do语句

do和while关系紧密,只不过表达式是在每次执行完循环之后判断



do 
 语句
while(表达式)



跟while语句一样,do循环必须也是一条语句,你也可以用多条复合语句,加{}就可以。



倒计时例子
i = 10;
do{
  printf("%d",i);
  --i;
}while(i>0);

执行do的时候,先执行循环,输出i,接着对i>0进行判定
然后判定成功再次执行循环体,直到i>0判定为假为止。



for语句



for(表达式1;表达式2;表达式3)
  语句

其中1、2、3都是表达式。

for(i = 10;i > 0; i--)
  printf("%d",i);

执行for时,i初始化为10,接着判定i>0,如果为真,执行printf语句,接着i进行自减,直到i>0判定为假。



for 循环的控制流



for ( init; condition; increment )
{
   statement(s);
}



  1. init
  2. 接下来,会判断 condition。如果为真,则执行循环主体。如果为假,则不执行循环主体,且控制流会跳转到紧接着 for 循环的下一条语句。
  3. 在执行完 for 循环主体后,控制流会跳回上面的 increment
  4. 条件再次被判断。如果为真,则执行循环,这个过程会不断重复(循环主体,然后增加步值,再然后重新判断条件)。在条件变为假时,for 循环终止。

goto语句

break语句和continue语句都是跳转语句,都是控制从程序的一个位置转移到另一个位置。



while(...){
   switch(...){
     goto label;
       ...
}
}
label: statement;





python while循环 闰年每18个换行 运用while循环求闰年的_控制流


python while循环 闰年每18个换行 运用while循环求闰年的_循环判定闰年的程序_02

流程图