C++程序设计——十三

C语言中的while循环,for循环,do while循环

循环的意义

在某些时候,我们需要多次执行同一块代码或者重复度很高的代码,但显然我们一个一个去敲的话,太浪费时间和精力。这时,我们就需要循环

循环的类型

在C语言中,有三种基本循环类型,如下:

  • while循环:当给定条件为真时,重复语句或语句组。它会在执行循环主体之前测试条件。
  • for循环:多次执行一个语句序列,简化管理循环变量的代码。
  • do…while循环:在循环主体结尾测试条件是否为真,其他与 while 语句类似。

我们还可以用这三种基本的循环进行嵌套,得到嵌套循环。

循环控制语句

有了循环,我们就需要去控制循环,循环控制语句能够改变循环里面代码的执行顺序,帮助我们实现代码的跳转。

  • break语句:终止循环或 switch 语句,程序流将继续执行紧接着循环或 switch 的下一条语句。
  • continue语句:告诉一个循环体立刻停止本次循环迭代,重新开始下次循环迭代。
  • goto语句:无条件转移语句,将控制转移到被标记的语句。但是不建议在程序中使用 goto 语句。

使用循环

在对循环的知识有了基本的认知后,我们深入了解一下他们。

while循环

只要条件为真,while循环会一直执行,只能在循环主体中更新循环控制变量
语法如下:

while(condition)
{
   //代码语句
}

流程图如下:
在这里插入图片描述
通过流程图我们可以看到,如果刚开始条件就为false,会直接跳过循环,直接执行while循环后面的语句。
while死循环

#include <stdio.h>
int main()
{
    int x=1;
    while(x<18)
    {
        printf("x的值为:%d\n",x);
        x--;
    }
}

for循环

语法如下

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

for循环执行过程
1、首先执行init语句,即先初始化最初的条件,(但如果前面已经写好初始条件,这里也可以略过不写),这里只在进入循环的时候执行一次,之后不会再执行;执行2
2、判断condition是否为真,为真,接着执行3,否则跳出循环;
3、执行循环主体,执行完后执行条件改变语句(increment),更新循环控制变量(这里也可以略过不写,而是在循环主体里面更新循环控制变量,就像while循环;或者不更新,变成死循环);然后再去执行2
for死循环

#include <stdio.h>
int main ()
{
   /*没有更新循环控制变量,条件永远为真,是死循环*/
   for( int a = 10; a < 20;)
   {
      printf("a 的值: %d\n", a);
   }
 
   return 0;
}

for循环流程图如下
在这里插入图片描述
与while循环一样,如果在刚开始循环条件就不为真,也会跳过循环,直接执行后面的语句

do…while循环

与for循环和while循环不同,这两者在循环头部判断循环条件,而do…while循环是在循环的尾部判断条件;这也导致for循环和while循环可能一次都不会执行循环主体,但do…while循环至少执行一次。
语法如下

do
{
   statement(s);

}while( condition );

条件表达式出现在循环的尾部,所以循环中的 statement(s) 会在条件被测试之前至少执行一次。
如果条件为真,控制流会跳转回上面的 do,然后重新执行循环中的 statement(s)。这个过程会不断重复,直到给定条件变为假为止。
流程图如下
在这里插入图片描述
do…while死循环

#include <stdio.h>
 
int main ()
{
   /* 定义循环控制变量 */
   int a = 10;

   /* do 循环执行,在条件被测试之前至少执行一次 */
   do
   {
       printf("a 的值: %d\n", a);
       a = a + 1;//更新循环控制变量
       //但无论怎么更新,条件始终为真
   }while( a > 0 );
 
   return 0;
}

for循环,while循环和do…while循环构成嵌套循环的实例

#include <stdio.h>

int main()
{
    int x=1;
    while(x<=2)
    {
        printf("第%d次while循环\n",x);
        
        for(int y=1;y<=2;y++)//嵌套循环
        {
            printf("第%d次while循环中的第%d次for循环\n",x,y);
            int z=1;
            do//再次嵌套
            {
                printf("第%d次while循环中的第%dfor循环的第%d次do...while循环\n",x,y,z);
                z++;//更新do...while循环的循环控制变量
            } while (z<=2);
            
        }

        x++;//更新while循环的循环控制变量
    }
}

运行结果如下

1while循环
第1while循环中的第1for循环
第1while循环中的第1for循环的第1do...while循环
第1while循环中的第1for循环的第2do...while循环
第1while循环中的第2for循环
第1while循环中的第2for循环的第1do...while循环
第1while循环中的第2for循环的第2do...while循环
第2while循环
第2while循环中的第1for循环
第2while循环中的第1for循环的第1do...while循环
第2while循环中的第1for循环的第2do...while循环
第2while循环中的第2for循环
第2while循环中的第2for循环的第1do...while循环
第2while循环中的第2for循环的第2do...while循环

如果我们在里面加入循环控制语句break和continue,如下

#include <stdio.h>

int main()
{
    int x=1;
    while(x<=2)
    {
        printf("第%d次while循环\n",x);
        
        for(int y=1;y<=2;y++)//嵌套循环
        {
            if(y==1)
            {
                continue;//跳过此次循环,直接执行下次循环
            }
            printf("第%d次while循环中的第%d次for循环\n",x,y);
            int z=1;
            do//再次嵌套
            {
                if(z==1)
                {
                    printf("进入了do...while循环\n");
                    break;//跳出当前循环
                }
                printf("第%d次while循环中的第%dfor循环的第%d次do...while循环\n",x,y,z);
                z++;//更新do...while循环的循环控制变量
            } while (z<=2);
            
        }

        x++;//更新while循环的循环控制变量
    }
}

结果如下,我们可以看到,continue语句使程序不再执行第一次for循环主体,而是直接执行下次for循环。而在每次while循环的第2次for循环里面,虽然每次都进入了do…while循环,但是break语句使得直接终止do…while循环,不再执行后面的语句。

1while循环
第1while循环中的第2for循环
进入了do...while循环
第2while循环
第2while循环中的第2for循环
进入了do...while循环
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值