分支与循环(下)

1.do-while循环

1.1语法形式

在循环语句中do-while语句的使用很少,它的语法如下:

do

 语句;

while(表达式);

while和for这两个循环都是先判断,条件满足就进入循环,执行循环语句,如果不满足就跳出循环;

而do-while循环则是直接进入循环体,执行循环语句,然后再执行while后面的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

1.2 do-while执行流程

 

在do-while循环中先执行图上的“语句”,执行完语句,在去执行“判断表达式”,判断表达式的结果是!=0,则继续循环,执行循环语句;判断表达式的结果==0,则循环结束。

所以在do-while语句中循环体式至少执行一次的,只是do-while循环比较特别的地方。

2.3 do-while循环实例

在屏幕上打印1~10的值

#include <stdio.h>
int main()
{
   int i = 1;
   do
  {
   printf("%d ", i);
   i = i + 1;
  } 
   while(i<=10);
 
 return 0;
}

 

2.break和continue语句

在循环的过程中,如果某些情况发生的时候需要提前终止循环,这是非常常见的现象。C语言中提供了break和continue这两个关键字,这就是应用到循环中的。

1 break的作用是用于永久的循环,只要break被执行,直接就会跳出循环,继续往后执行。

2 continue的作用是跳过本次循环 continue后面的代码,在for循环中和while循环中有差异的。

2.1 while循环中的break和continue

2.1.1 break举例

#include <stdio.h>
 int main()
{
    int i = 1;
    while(i<=10)
  {
     if(i == 5)
     break;//当i等于5后,就执⾏break,循环就终⽌了
     printf("%d ", i);
     i = i+1;
  }
    return 0;
}
1

执行结果:

 

打印了1,2,3,4后 ,当i等于5的时候,循环在break的地方终止了,不在打印,不再循环。所以break的作用就是永久的终止循环,只要break被执行,break外的一层循环就终止了。那以后我们在循环中,想在某个条件下终止循环,则可以使用break来完成我们想要的效果。

2.1.2 continue举例

continue是继续的意思,在循环中的作用就是跳过本次循环中continue后面的代码,继续进行下一次循环的判断。

上面的代码,如果break换成continue会是什么?

#include <stdio.h>
int main()
{
   int i = 1;
   while(i<=10)
  {
    if(i == 5)
    continue;
 //当i等于5后,就执⾏continue,直接跳过continue的代码,去循环的判断的地⽅
 //因为这⾥跳过了i = i+1,所以i⼀直为5,程序陷⼊和死循环
    printf("%d ", i);
    i = i+1;
  }
    return 0;
}
1

那道这里我们就能分析出来,continue可以帮助我们跳过某一次循环continue后面的代码,直接到循环的判断部分,进行下一次循环的判断,如果循环的调整是在continue后面的话,可能会造成死循环。

2.2 for循环中的break和continue

2.2.1 break举例

其实和while循环中的break一样,for循环中的break也是用于终止循环的,不管循环还需要循环多少次,只要执行到break,循环就彻底终止。

#include <stdio.h>
int main()
{
   int i = 1;
   for(i=1; i<=10; i++)
  {
    if(i == 5)
    break;
    printf("%d ", i);
  }
 return 0;
}

 

break的作用是永久的终止循环,未来我们在某一个条件发生的时候,不想再继续循环的时候,就可以使用break来完成。

 2.2.2 continue举例

上面的代码,如果把break换成continue会是什么结果呢?

#include <stdio.h>
int main()
{
   int i = 1;
   for(i=1; i<=10; i++)
  {
   if(i == 5)
   continue;//这⾥continue跳过了后边的打印,来到了i++的调整部分
   printf("%d ", i);
 }
  return 0;
}

 

所以在for循环中continue的作用是跳过本次循环中continue后的代码,直接去到循环的调整部分。未来当某个条件发生的时候,本次循环无需再执行后续操作的时候就可以使用continue来实现。 

2.3 do-while循环中的break和continue

do-while语句中的break和continue的作用和while循环中几乎一模一样,大家下来可以自行测试体会。

#include <stdio.h>
int main()
{
 int i = 1;
   do
   {
     if(i == 5)
     break;
     printf("%d ", i);
     i = i + 1;
   }
   while(i<=10);
 
  return 0;
}
#include <stdio.h>
int main()
{
 int i = 1;
  do
   {
     if(i == 5)
     continue;
     printf("%d ", i);
     i = i + 1;
   }while(i<=10);
 return 0;
}

 3. 循环的嵌套

前面学习了三种循环while,do-while,for,这三种循环往往会嵌套在一起才能更好的解决问题,就是所说的:循环的嵌套,这里我们就看一个例子。

3.1 练习

1.找出100~~200之间的素数,首先要有100~~200之间的数,这里可以使用循环解决。

2.假设要判断i是否为素数,需要拿2~i-1之间的数字去试除i,要产生2~i-1之间的数字,也可以使用循环解决。

3.如果2~i-1之间有数字能整除i,则i不是素数,如果都不能被整除,则i是素数。

#include <stdio.h>
 int main()
 {
   int i = 0;
 //循环产⽣100~200的数字
   for(i=100; i<=200; i++)
    {
   //判断i是否为素数
   //循环产⽣2~i-1之间的数字
      int j = 0;
      int flag = 1;//假设i是素数
        for(j=2; j<i; j++)
       {
          if(i % j == 0)
        {
         flag = 0;
          break;
        }
      }
    if(flag == 1)
    printf("%d ", i);
  }
  return 0;
}

4. goto语句

C语言提供了一种非常特别的语法,就是goto语句和跳转标号,goto语句可以实现在同一函数内跳转到设置好的标记处。 

#include <stdio.h>
int main()
{
  printf("hehe\n");
  goto next:
  printf("haha\n");
 
  next:
  printf("跳过了haha的打印\n"); 
  return 0;
}

goto语句如果使用的不当,就会导致在函数内部随意乱转,打乱程序流程,所以建议是尽量不使用;但goto 不是一无是处,在多层循环的代码中,如果想快速跳出。

for(...)
{
    for(...)
   {
      for(...)
    {
        if(disaster)
       goto error;
    }
   }
}
 error:
 //...

本来for循环想提前跳出得使用break,一个break只能跳出一层for循环,如果3层循环嵌套就得使用3个break才能跳出循环,所以在这种情况下使用goto语句就会更加的快捷。 

 

 

 

 

 

 

  • 25
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

脆脆鲨<码>

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值