• 六、C语言循环语句


    1、循环

    1.while循环

    • 格式:
      while(condition){
          statement(s);
      }
      
      • 1
      • 2
      • 3
    • 注意:while语句可能一次都不执行
    • 代码实现:
      #include<stdio.h>
      
      int main(){
          int a = 10;
          while (a < 15)
          {
              printf("a的值:%d\n",a);
              a++;
          }
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    • 运行结果:
      a的值:10
      a的值:11
      a的值:12
      a的值:13
      a的值:14
      
      • 1
      • 2
      • 3
      • 4
      • 5

    2.for循环

    • 格式:

      for (init; condition; increment){
          statement(s);
      }
      
      • 1
      • 2
      • 3
    • 流程图:
      在这里插入图片描述

    • 注意:

      • init先被执行,且只执行一次,这一步可以省略
      • condition判断,如果为真,则执行循环;如果为假,则执行for循环的下一条语句
      • icrement作用是更新循环变量,可以省略
      • 当第一次判断结果为假时,则整个for循环都不会被执行
    • 代码实现:

      #include<stdio.h>
      
      int main(){
          //无省略for循环
          for(int a = 10; a <= 15; a++){
              printf("无省略循环中a的值:%d\n",a);
          }
      
          //省略init
          int b = 10;
          for(; b <= 15; b++){
              printf("省略init中b的值:%d\n",b);
          }
      
          //省略increment
          for(int c = 10; c <= 15; ){
              printf("省略increment中c的值:%d\n",c);
              c++;
          }
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
    • 运行结果:

      无省略循环中a的值:10
      无省略循环中a的值:11
      无省略循环中a的值:12
      无省略循环中a的值:13
      无省略循环中a的值:14
      无省略循环中a的值:15
      省略init中b的值:10
      省略init中b的值:11
      省略init中b的值:12
      省略init中b的值:13
      省略init中b的值:14
      省略init中b的值:15
      省略increment中c的值:10
      省略increment中c的值:11
      省略increment中c的值:12
      省略increment中c的值:13
      省略increment中c的值:14
      省略increment中c的值:15
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

    3.do…while循环

    • 格式:

      do{
          statement();
      }while(condition);
      
      • 1
      • 2
      • 3
    • 注意:循环至少被执行一次

    • 流程图:
      在这里插入图片描述

    • 代码实现:

      #include<stdio.h>
      
      int main(){
          int a = 10;
          //在条件被判断之前至少被执行一次
          do{
              printf("a的值:%d\n",a);
              a++;
          }while (a < 15);
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
    • 运行结果:

      a的值:10
      a的值:11
      a的值:12
      a的值:13
      a的值:14
      
      • 1
      • 2
      • 3
      • 4
      • 5

    4.循环的嵌套

    • 代码实现:
      #include<stdio.h>
      
      /* 循环的嵌套 */
      int main(){
      /* for循环语句嵌套:求20以内的质数 */
      int i, j;
          for( i = 2; i < 20; i++){
              for( j = 2; j <= (i/j); j++)
                  if(!(i%j)) break;
              if(j > (i/j)) printf("%d昰质数\n",i);
          }
      
          /* while嵌套 */
          i = 1;
          while (i <= 5)
          {
              j = 1;
              while(j <= i){
                  printf("%d ",j);
                  j++;
              }
              printf("\n");
              i++;
          }
      
          /* do while嵌套 */
          i = 1;
          do
          {
              j = 1;
              do{
                  printf("*");
                  j++;
              }while(j <= i);
              i++;
              printf("\n");
          } while (i <= 5);
          
          
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
    • 运行结果:
      2昰质数
      3昰质数
      5昰质数
      7昰质数
      11昰质数
      13昰质数
      17昰质数
      19昰质数
      1 
      1 2 
      1 2 3 
      1 2 3 4 
      1 2 3 4 5 
      *
      **
      ***
      ****
      *****
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18

    2、循环控制语句

    1.break语句

    • 作用:

      • 当一个循环语句中出现break语句时,会跳出当前循环,执行循环的下一条语句
      • 终止switch语句中的case
    • 流程图:
      123

    • 代码实现:

      #include<stdio.h>
      
      int main(){
          int a = 10;
          while(a < 15){
              printf("a=%d\n",a);
              if(a > 13){
                  break;
              }
              a++;
          }
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
    • 运行结果:

      a=10
      a=11
      a=12
      a=13
      a=14
      
      • 1
      • 2
      • 3
      • 4
      • 5

    2.continue语句

    • 作用:当遇到continue语句时,代码会跳转到for或者while重新开始执行,与continue同一等级的代码是否执行取决于二者的先后

    • 流程图:
      在这里插入图片描述

    • 代码实现:

      #include<stdio.h>
      
      int main(){
          int a = 10;
          do{
              if(a == 15){
                  a = a + 1;
                  continue;
                  /* 
                      注意continue产生的死循环情况
                      如将a=a+1;写到下面的位置,当a等于15时进入if,
                      遇到continue跳到if,a还是等于15,从而陷入死循环
                  */
                  // a = a + 1;
              }
              printf("a=%d\n",a);
              a++;
          }while(a < 17);
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
    • 运行结果:

      a=10
      a=11
      a=12
      a=13
      a=14
      a=16
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

    3.goto语句

    • 作用:允许把语句无条件地跳转到同意函数内的指定语句

    • 注意:必须是同意函数内

    • 格式:

      goto label;
      
      codeblock;
      
      label:statement;
      
      • 1
      • 2
      • 3
      • 4
      • 5
    • 流程图:
      在这里插入图片描述

    • 代码实现:

      #include<stdio.h>
      
      int main(){
          int a = 10;
          LOOP:do //定义goto标签
          {
              if(a == 15){
                  a = a + 1;
                  goto LOOP;//goto语句跳转,在此处相当于continue
              }
              printf("a=%d\n",a);
              a++;
          } while (a < 20);
          return 0;   
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
    • 运行结果:

      a=10
      a=11
      a=12
      a=13
      a=14
      a=16
      a=17
      a=18
      a=19
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9

    4.for( ; ;)结构的无限循环

    • 作用:当条件不存在时,默认为真,被用来实现无限循环
    • 代码实现:
      #include<stdio.h>
      
      int main(){
          for(;;){
              printf("无限循环!\n");
          }
          return 0;
      }
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
    • 运行结果:
      无限循环!
      无限循环!
      无限循环!
      无限循环!
      无限循环!
      无限循环!
      ...
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
  • 相关阅读:
    IOS开发学习日记(十七)
    [1157]dbeaverr的ssh远程连接
    DeepFusion: Lidar-Camera Deep Fusion for Multi-Modal 3D Object Detection 论文笔记
    使用GPT-4生成训练数据微调GPT-3.5 RAG管道
    sql语句创建数据库
    基于php化妆品销售
    C#:Winform界面中英文切换功能
    【无标题】
    游戏合作伙伴专题:BreederDAO 与 Ambrus 携手,勇敢面对变暖的世界
    Dynamic Potential-Based Reward Shaping将势能塑形奖励函数拓展为F(s,t,s‘,t‘)
  • 原文地址:https://blog.csdn.net/qq_43280851/article/details/125531817