C语言 循环



  • 循环

    您可能会遇到需要多次执行一段代码的情况。通常,语句是按顺序执行的:函数中的第一个语句首先执行,然后第二个执行,依此类推。编程语言提供了各种控制结构,允许更复杂的执行路径。循环语句使我们可以多次执行一个语句或一组语句。下面给出的是大多数编程语言中循环语句的一般形式-
    c loop_architecture
    C编程语言提供了以下类型的循环来处理循环需求。
    循环类型 描述
    while循环 在给定条件为真时重复一个语句或一组语句。它在执行循环体之前测试条件。
    for循环 多次执行一系列语句,并简化管理循环变量的代码。
    do... while循环 它更像while语句,除了它在循环主体的末尾测试条件(do...while循环至少会执行一次)。
    嵌套循环 您可以在任何其他while,for或do..while循环内使用一个或多个循环。
  • while循环

    语法
    
    while(condition) {
       statement(s);
    }
    
    
    流程图
    c loop
    这里,要注意的关键是,while循环可能根本不执行。当测试条件第一次并且结果为false时,将跳过循环主体,并执行while循环之后的第一条语句。
    范例
    
    #include <stdio.h>
     
    int main () {
    
       /* local variable definition */
       int a = 10;
    
       /* while loop execution */
       while( a < 20 ) {
          printf("value of a: %d\n", a);
          a++;
       }
     
       return 0;
    }
    
    
  • for循环

    语法
    
    for ( init; condition; increment ) {
       statement(s);
    }
    
    
    这是“for”循环中的控制流程-
    • init步骤首先被执行,并且只有一次。此步骤允许您声明和初始化任何循环控制变量。
    • 接下来,测试condition。如果为true,则执行循环主体。如果为假,则不执行循环主体,并且控制流仅在“for”循环之后跳转到下一条语句。
    • 在“for”循环的主体执行之后,控制流跳回到increment语句。该语句允许您更新任何循环控制变量。
    • 现在将再次测试condition。如果为true,则循环执行并重复执行过程(循环主体,然后是递增步,然后再次是条件)。条件变为假之后,“for”循环终止。
    流程图
    c loop
    范例
    
    #include <stdio.h>
     
    int main () {
    
       int a;
            
       /* for loop execution */
       for( a = 10; a < 20; a = a + 1 ){
          printf("value of a: %d\n", a);
       }
     
       return 0;
    }
    
    
  • do...while循环

    与for和while循环不同,for和while循环在循环的顶部测试循环条件,而C语言中的do ... while循环在循环的底部检查其条件。do...while循环类似于while循环,但事实上,它是保证执行至少一次。
    语法
    
    do {
       statement(s);
    } while( condition );
    
    
    请注意,条件表达式出现在循环的末尾,因此循环中的语句在测试条件之前执行一次。如果条件为真,则控制流跳回去do,并且循环中的语句再次执行。重复此过程,直到给定条件变为假。
    流程图
    c loop
    范例
    
    #include <stdio.h>
     
    int main () {
    
       /* local variable definition */
       int a = 10;
    
       /* do loop execution */
       do {
          printf("value of a: %d\n", a);
          a = a + 1;
       }while( a < 20 );
     
       return 0;
    }
    
    
  • 嵌套循环

    C编程允许在另一个循环中使用一个循环。以下部分显示了一些示例来说明这一概念。
    C中嵌套的for循环语句的语法如下-
    
    for ( init; condition; increment ) {
    
       for ( init; condition; increment ) {
          statement(s);
       }
       statement(s);
    }
    
    
    C编程语言中的嵌套while循环语句的语法如下-
    
    while(condition) {
    
       while(condition) {
          statement(s);
       }
       statement(s);
    }
    
    
    C编程语言中嵌套do ... while循环语句的语法如下-
    
    do {
       statement(s);
    
       do {
          statement(s);
       }while( condition );
    
    }while( condition );
    
    
    关于循环嵌套的最后一点是您可以将任何类型的循环放入任何其他类型的循环中。例如,“for”循环可以在“while”循环内,反之亦然。
    范例
    
    #include <stdio.h>
     
    int main () {
    
       /* local variable definition */
       int i, j;
       
       for(i = 2; i<100; i++) {
    
          for(j = 2; j <= (i/j); j++) 
          if(!(i%j)) break; // if factor found, not prime
          if(j > (i/j)) printf("%d is prime\n", i);
       }
     
       return 0;
    }
    
    
  • 循环控制语句

    循环控制语句从其正常顺序更改执行。当执行离开作用域时,在该作用域中创建的所有自动对象都将被销毁。C支持以下控制语句。
    控制声明 描述
    break声明 终止循环或switch语句,并在循环或switch后立即将执行的语句。
    continue声明 使循环跳过其其余部分,并在重新进行迭代之前立即重新测试条件。
    goto声明 将控制权转移到带标签的语句。
  • break声明

    C编程中的break语句具有以下两种用法-
    • 当在循环内遇到break语句时,循环立即终止,程序控制在循环后的下一条语句处恢复。
    • 它可以用于终止switch语句中的case。
    如果使用嵌套循环,则break语句将停止执行最里面的循环,并开始执行最里面循环块之后的下一行代码。
    语法
    
    break;
    
    
    流程图
    c loop
    范例
    
    #include <stdio.h>
     
    int main () {
    
       /* local variable definition */
       int a = 10;
    
       /* while loop execution */
       while( a < 20 ) {
       
          printf("value of a: %d\n", a);
          a++;
                    
          if( a > 15) {
             /* terminate the loop using break statement */
             break;
          }
       }
     
       return 0;
    }
    
    
  • continue声明

    C编程中的continue语句的工作原理与break语句类似。而不是强制终止,它会强制执行循环的下一次迭代,从而跳过之间的任何代码。对于for循环,continue语句使条件测试和循环的增量部分执行。对于while和do ... while循环,continue语句使程序控制传递给条件测试。
    语法
    
    continue;
    
    
    流程图
    c loop
    范例
    
    #include <stdio.h>
    
    int main () {
    
       /* local variable definition */
       int a = 10;
    
       /* do loop execution */
       do {
       
          if( a == 15) {
             /* skip the iteration */
             a = a + 1;
             continue;
          }
                    
          printf("value of a: %d\n", a);
          a++;
       
       } while( a < 20 );
     
       return 0;
    }
    
    
  • goto声明

    C goto 语句提供从“goto”的标记声明相同功能的无条件跳转。
    注 – 在任何编程语言中都强烈建议不要使用goto语句,因为它会使跟踪程序的控制流变得困难,从而使程序难以理解和修改。可以重写任何使用goto的程序来避免使用它们。
    语法
    
    goto label;
    ..
    .
    label: statement;
    
    
    这里的label可以是除C关键字以外的任何纯文本,并且可以在C程序中的goto语句的上方或下方任意位置设置。
    流程图
    c loop
    范例
    
    #include <stdio.h>
    
    int main () {
    
       /* local variable definition */
       int a = 10;
    
       /* do loop execution */
       LOOP:do {
       
          if( a == 15) {
             /* skip the iteration */
             a = a + 1;
             goto LOOP;
          }
                    
          printf("value of a: %d\n", a);
          a++;
    
       }while( a < 20 );
     
       return 0;
    }
    
    
  • 无限循环

    如果条件永远不会为假,则循环将变成无限循环。传统上,for循环用于此目的。“for”循环的三个表达式不是必需的,因此可以通过将条件表达式保留为空来进行无限循环。
    
    int main () {
    
       for( ; ; ) {
          printf("这里将永远执行.\n");
       }
    
       return 0;
    }
    
    
    当条件表达式不存在时,假定它为真。您可能有一个初始化和增量表达式,但是C程序员更经常使用for(;;)构造来表示一个无限循环。
    while循环可以指定条件为true永远循环
    
    int main () {
    
       while( true ) {
          printf("这里将永远执行.\n");
       }
    
       return 0;
    }
    
    
    注意 -您可以通过按Ctrl + C键终止无限循环。