zoukankan      html  css  js  c++  java
  • c语言学习之基础知识点介绍(七):循环结构

    本节主要介绍循环结构

    一、while循环

    /*
    语法:
    while(表达式){
       //循环体;
    }
    注意:循环变量、循环条件和循环控制语句三者缺一不可。
    例如:
    */
    int num = 0;                //循环变量
    while(num < 5 ){        //循环条件
      printf(" %d",num):
      num++;                      //控制循环结束语句
    }
    //例如:计算1到100的和
    int sum = 0;
    int i=1;
    while(i<=100){
          sum+=i;
          i++;   
    }
    printf("sum= %d",sum);
    /**
    注意:
            1、避免死循环,避免永真或永假。永真死循环,永假不执行,毫无意义。
             2、while循环后面千万不要加分号。
             3、结束循环的语句不要忘记写。
             4、和if一样,大括号可以省略,只能控制离它最近的一条语句,并且这条语句不能是声明变量的语句。
             5、在循环内声明的变量,不能在循环外使用。
    /

    下面扩展一个知识点,首先看一个问题,让用户输入n个数字,然后在这n个数字中,判断出最大的数字,最小的数字(对于有编程基础的肯定有很多种方式去解决这个问题)。

    int i = 1;
    int max = INT_32MIN;//首先我们要有一个我们认为最大的数字,这个数字必须极限小,以保证用户输入的每一个数字都比这个数字大。
    int min = INT_32MAX;//首先我们要有一个我们认为最小的数字,这个数字必须极限大,以保证用户输入的每一个数字都比这个数字小。
    while(i <= 5){
         printf("请输入第%d个数字:");
         int num ;
         scanf("%d",num);
         if(num>max){
            max=num;
         }
         if(num<min){
            min=num;
         }
    }
    printf("最大的数字为:%d 
    最小的数字为:%d:
    ",max,min);

    当然还有别的方法,就是把我们认为最大/最小的数字设置为用户第一次输入的数字,然后在循环判断。

    二、do-while循环

    /*
    语法:
    do{
        循环体;
    }while(表达式);
    注意:while后面一定要加分号。
    执行过程:先执行循环体,在执行循环体,判断是否执行。
    循环体至少会执行一次。
    */
    //例如:
    int num = 0;
    do{
        printf("%d",num)
        num++;
    }while(num>=0&&num<10);

    三、for循环

    /*
    语法:
         for(表达式1;表达式2;表达式3){
              //循环体;
         }
    注意:1、先执行表达式1,跳转到2;
                2、判断表达式2是否为真,如果为真,跳转到3,如果为假,跳转到5。
                3、执行循环体,执行完毕,跳转到4。
                4、执行表达式3,执行完毕跳转到2。
                5、跳出循环。
    其他格式:
    //死循环
    for(;;){
        // 循环体
    }
    
    for(;表达式2;表达式3){
           //循环体;
    }
    //所有的表达式都可以省略,但是可能回出现死循环,需要注意。
    */    
    //例如:
    for(int i =0 ; i<10;i++){
      printf("%d",i);
    }
    //输出0到9。

    怎么用for循环打出100到999之间的水仙花数呢?(水仙花数:百位的立方+十位的立方+个位的立方=这个数的本身)。

    /*
    取百位、十位、个位的数字分别:
    百位 = 原数字/100;
    十位 = 原数字/10%10;
    个位 = 原数字%10;
    这样能分别取到相对应的数字。
    下面开始打印。
    */
    for (int i = 100;i<=999;i++){
         int bw = i/100;
         int sw = i/10%10;
         int gw = i%10;
         if(bw*bw*bw + sw*sw*sw+gw*gw*gw  == i){
                printf("%d 
    " i);
         }
    }

    for循环可以嵌套,看如下实例:

    //打印九九乘法表
    for(int i = 1; i<=9 ; i++){
         for(int j = 1; j<=i ; j++){
              printf(" %d × %d  = %d ",i,j,i*j);
         }
         printf("
    ");
    }
    
    //打印等腰三角形
    for(int i = 1 ;i=5 ;i++){
         for(int j = 1;j<=5-i;j++) //这里写的5是行数
              printf(" ");
        for (int k= 1;k <= i * 2 - 1; k++)
              printf("*");
        printf("
    ");
    }
    //注意:循环的嵌套一般是用来控制平面,外层循环控制行数,内层循环控制列数。

    如果想跳出当前的循环,使用break关键字,例如:

    //得到1到10之间的第一个奇数
    for(int i = 1; i<=10,i++){
        if(i%2==1){
            printf("%d",i);
            break;
        }
    }

    如果想结束本次循环,继续下次循环,用contiune关键字,例如:

    //打印出1到10之间的偶数
    for(int i =1 ;i<=10;i++){
        if(i%2==1){
            continue;
        }
        printf("%d",i);
    }

     

  • 相关阅读:
    CF1280G Kirchhoff's Current Loss【表达式解析,不等式】
    [AGC040C] Neither AB nor BA
    [AGC040B]Two Contests
    [ARC101E]Ribbons on Tree(容斥,dp)
    [GXOI/GZOI2019]旧词
    [SDOI2015]寻宝游戏
    半平面交初步
    [CF585E]Marbles
    [P5348]密码解锁
    NOIP2018 保卫王国
  • 原文地址:https://www.cnblogs.com/bobo-pcb/p/4905324.html
Copyright © 2011-2022 走看看