3、循环结构

153 阅读1分钟

程序三大结构

2.jpg

循环结构

  • 循环结构,就是根据某些给出的条件,重复的执行同一段代码

  • 循环必须要有某些固定的内容组成

    1. 初始化
    2. 条件判断
    3. 要执行的代码
    4. 自身改变

1、WHILE 循环

3

  • while,中文叫 当…时,其实就是当条件满足时就执行代码,一旦不满足了就不执行了

  • 语法 while (条件) { 满足条件就执行 }

  • 因为满足条件就执行,所以我们写的时候一定要注意,就是设定一个边界值,不然就一直循环下去了

    // 1. 初始化条件
    var num = 0;
    // 2. 条件判断
    while (num < 10) {
      // 3. 要执行的代码
      console.log('当前的 num 的值是 ' + num)
      // 4. 自身改变
      num = num + 1
    }
    
    • 如果没有自身改变,那么就会一直循环不停了 示例:倒序输出 5 4 3 2 1

      4.jpg

2、DO WHILE 循环

5

  • 是一个和 while 循环类似的循环

  • while 会先进行条件判断,满足就执行,不满足直接就不执行了

  • 但是 do while 循环是,先不管条件,先执行一回,然后在开始进行条件判断

  • 语法: do { 要执行的代码 } while (条件)

    // 下面这个代码,条件一开始就不满足,但是依旧会执行一次 do 后面 {} 内部的代码
    var num = 10
    do {
      console.log('我执行了一次')
      num = num + 1
    } while (num < 10)
    

3、FOR 循环

  • whiledo while 循环都不太一样的一种循环结构
  • 道理是和其他两种一样的,都是循环执行代码的
  • 语法: for (var i = 0; i < 10; i++) { 要执行的代码 }

1.png

// 把初始化,条件判断,自身改变,写在了一起
for (var i = 1; i <= 10; i++) {
  // 这里写的是要执行的代码
  console.log(i)
}
// 控制台会依次输出 1 ~ 10 
  • 这个只是看起来不太舒服,但是用起来比较好用

练习

  • 1、正序倒输出1-100的数
 <script>
        // 1、正序输出1-100的数
        for(var i=1;i<101;i++){
            console.log(i);
        }
        // 2、倒序输出1-100的数
        for(var i=100;i>0;i--){
            console.log(i);
        }
    </script>
  • 2、打印出1-100里所有的偶数
    <script>
        // 打印出1-100里所有的偶数
        for(var i=1;i<101;i++){
            if(i%2==0){
                console.log(i);
            }
        }
    </script>
  • 3、打印100以内能被4整除的数
    <script>
        // 打印100以内能被4整除的数
        for(var i=1;i<101;i++){
            if(i%4==0){
                console.log(i);
            }
        }
    </script>

累加算法

1.png 练习:1、1+2+3+4+...100的和

    <script>
        //求 1+2+3+4+...100的和
        var sum=0
        for(var i=1;i<101;i++){
           sum=sum+i
        }
        console.log(sum);
    </script>

2、求 2 + 4 + 6 + 8 + 10 的和

   <script>
        //求 2 + 4 + 6 + 8 + 10 的和 
        var sum=0
        for(var i=1;i<6;i++){
           sum=sum+i*2
        }
        console.log(sum);
    </script>

跳转语句

BREAK 终止循环 break

  • 在循环没有进行完毕的时候,因为我设置的条件满足,提前终止循环
  • 比如:我要吃五个包子,吃到三个的时候,不能在吃了,我就停止吃包子这个事情
  • 要终止循环,就可以直接使用 break 关键字
    for (var i = 1; i <= 5; i++) {
      // 没循环一次,吃一个包子
      console.log('我吃了一个包子')
      // 当 i 的值为 3 的时候,条件为 true,执行 {} 里面的代码终止循环
      // 循环就不会继续向下执行了,也就没有 4 和 5 了
      if (i === 3) {
        break
      }
    }
    

CONTINUE 结束本次循环 couninue

  • 在循环中,把循环的本次跳过去,继续执行后续的循环
  • 比如:吃五个包子,到第三个的时候,第三个掉地下了,不吃了,跳过第三个,继续吃第四个和第五个
  • 跳过本次循环,就可以使用 continue 关键字
    for (var i = 1; i <= 5; i++) {
      // 当 i 的值为 3 的时候,执行 {} 里面的代码
      // {} 里面有 continue,那么本次循环后面的代码就都不执行了
      // 自动算作 i 为 3 的这一次结束了,去继续执行 i = 4 的那次循环了
      if (i === 3) {
        console.log('这个是第三个包子,掉地下了,我不吃了')
        continue
      }
      console.log('我吃了一个包子')
    }
    
  • document.write('内容') => 将内容显示到页面上 多条语句输出不换行,可以打印br换行标签
  • 计数器:定义一个变量,初始值为0 ,如果满足条件值加一
  • 练习: 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出(使用document.write()打印)
    
    <script>
        /*    打印出1000-2000年中所有的闰年,并以每行四个数的形式输出
        (使用document.write()打印)  计数器 */
        var count = 0
        for (var year = 1000; year < 2001; year++) {
            if ((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0)) {
                document.write(year + ' ')
                count++
                if (count % 4 == 0) {
                    document.write('<br>')
                }
            }
        }
    </script>

双重for循环

for循环可以重复执行一个操作,当然也可以重复执行另一个循环,即for循环里面嵌套for循环,即双重for循环 循环的嵌套: 外层循环循环一次,内层就要循环完

1.png

  • 练习: 1、打印图形
     <script>
       /* 1、打印图形
            *
            **
            ***
            ****
            ***** 
        */
        for(var i=1;i<6;i++){
            for(var j=1;j<=i;j++){
                document.write('*');
            }
            document.write('<br>')
        }
    </script>
  • 2、打印九九乘法表
    <script>
      /* 2、 打印九九乘法表
        1 x1 = 1
        2 x1 = 2 2 x2 = 4
        3 x1 = 3 3 x2 = 6 3 x3 = 9
        4 x1 = 4 4 x2 = 8 4 x3 = 12 4 x4 = 16
        5 x1 = 5 5 x2 = 10 5 x3 = 15 5 x4 = 20 5 x5 = 25
        6 x1 = 6 6 x2 = 12 6 x3 = 18 6 x4 = 24 6 x5 = 30 6 x6 = 36
        7 x1 = 7 7 x2 = 14 7 x3 = 21 7 x4 = 28 7 x5 = 35 7 x6 = 42 7 x7 = 49
        8 x1 = 8 8 x2 = 16 8 x3 = 24 8 x4 = 32 8 x5 = 40 8 x6 = 48 8 x7 = 56 8 x8 = 64
        9 x1 = 9 9 x2 = 18 9 x3 = 27 9 x4 = 36 9 x5 = 45 9 x6 = 54 9 x7 = 63 9 x8 = 72 9 x9 = 81
 */
        for (var i = 1; i < 10; i++) {
            for (var j = 1; j <= i; j++){
                document.write(i+'x'+j+'='+i*j+'&emsp;');
            }
            document.write('<br>')
        }
    </script>
  • 3、打印三角形图形
     /*  3、 打印三角形图形
            *
           ***
          *****
         *******
        *********
         */
        var n = 5
        for (var i = 1; i < 6; i++) {
            for (var j = 1; j <= n - i; j++) {
                document.write('&nbsp;');
            }
            for (var k = 1; k <= 2 * i - 1; k++) {
                document.write('*');
            }
            document.write('<br>')
        }
    </script>
  • 4、入职薪水10K/月,每年涨幅5%,50年后工资多少?(累加求和)
    <script>
        /*5、入职薪水10K/月,每年涨幅5%,50年后工资多少?(累加求和)
        提示: 
             1年  10000*12
             2年  1年 +  1年的涨幅
                        1年的工资*0.05
            求3年后的工资
                     2年 + 2年的涨幅
         */
        var sum=1000*12
        for(var year=2;year<51;year++){
            sum=sum+sum*0.05
        }
        document.write('50年后的工资是'+sum.toFixed(2)+'元')
    </script>
  • 5、1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 .... +1/99 - 1/100 和是多少?
     <script>
        /*6、1 - 1/2 + 1/3 - 1/4 + 1/5 - 1/6 .... +1/99 - 1/100 和是多少?
         */
        var sum=1
        for(var i=2;i<101;i++){
            if(i%2==0){
                sum=sum-(1/i)
            }
            else{
                sum=sum+(1/i)
            }
        }
        document.write('和为'+sum)
    </script>