zoukankan      html  css  js  c++  java
  • C语言跳出循环

    使用while或for循环时,如果想提前结束循环(在不满足结束条件的情况下结束循环),可以使用break或continue关键字。

    break关键字

    在《C语言switch语句》一节中,我们讲到了break,用它来跳出 switch 语句。

    当 break 关键字用于 while、for 循环时,会终止循环而执行整个循环语句后面的代码。break 关键字通常和 if 语句一起使用,即满足条件时便跳出循环。

    使用 while 循环计算1加到100的值:

    1. #include <stdio.h>
    2. int main(){
    3. int i=1, sum=0;
    4. while(1){ //循环条件为死循环
    5. sum+=i;
    6. i++;
    7. if(i>100) break;
    8. }
    9. printf("%d ", sum);
    10. return 0;
    11. }

    运行结果:
    5050

    while 循环条件为 1,是一个死循环。当执行到第100次循环的时候,计算完i++;后 i 的值为 101,此时 if 语句的条件 i> 100 成立,执行break;语句,结束循环。

    在多层循环中,一个 break 语句只向外跳一层。例如,输出一个4*4的整数矩阵:

    1. #include <stdio.h>
    2. int main(){
    3. int i=1, j;
    4. while(1){ // 外层循环
    5. j=1;
    6. while(1){ // 内层循环
    7. printf("%-4d", i*j);
    8. j++;
    9. if(j>4) break; //跳出内层循环
    10. }
    11. printf(" ");
    12. i++;
    13. if(i>4) break; // 跳出外层循环
    14. }
    15. return 0;
    16. }

    运行结果:

    1   2   3   4
    2   4   6   8
    3   6   9   12
    4   8   12  16

    当 j>4 成立时,执行break;,跳出内层循环;外层循环依然执行,直到 i>4 成立,跳出外层循环。内层循环共执行了4次,外层循环共执行了1次。

    continue语句

    continue 语句的作用是跳过循环体中剩余的语句而强制进入下一次循环。continue语句只用在 while、for 循环中,常与 if 条件语句一起使用,判断条件是否成立。

    来看一个例子:

    1. #include <stdio.h>
    2. int main(){
    3. char c = 0;
    4. while(c!=' '){ //回车键结束循环
    5. c=getchar();
    6. if(c=='4' || c=='5'){ //按下的是数字键4或5
    7. continue; //跳过当次循环,进入下次循环
    8. }
    9. putchar(c);
    10. }
    11. return 0;
    12. }

    运行结果:
    0123456789↙
    01236789

    程序遇到while时,变量c的值为'',循环条件c!=' '成立,开始第一次循环。getchar() 使程序暂停执行,等待用户输入,直到用户按下回车键才开始读取字符。

    本例我们输入的是 0123456789,当读取到4或5时,if 的条件c=='4'||c=='5'成立,就执行 continue 语句,结束当前循环,直接进入下一次循环,也就是说putchar(c);不会被执行到。而读取到其他数字时,if 的条件不成立,continue 语句不会被执行到,putchar(c);就会输出读取到的字符。

    break与continue的对比:break 用来结束所有循环,循环语句不再有执行的机会;continue 用来结束本次循环,直接跳到下一次循环,如果循环条件成立,还会继续循环。

  • 相关阅读:
    Struts2+Spring3+Mybatis3开发环境搭建
    spring+struts2+mybatis
    【LeetCode】Populating Next Right Pointers in Each Node
    【LeetCode】Remove Duplicates from Sorted Array
    【LeetCode】Remove Duplicates from Sorted Array II
    【LeetCode】Binary Tree Inorder Traversal
    【LeetCode】Merge Two Sorted Lists
    【LeetCode】Reverse Integer
    【LeetCode】Same Tree
    【LeetCode】Maximum Depth of Binary Tree
  • 原文地址:https://www.cnblogs.com/zhugeanran/p/8515608.html
Copyright © 2011-2022 走看看