2021-11-24

五、多重循环

在二重循环中,外层循环变量变化一次,内层循环变量变化整个

代码:

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环</title>

</head>

<body>

    <script>

        // 什么是二重循环?循环里面嵌套循环

        // 在二重循环中,外层循环变量变化一次,内层循环变量变化整个

        for(let i=1;i<=3;i++){

            console.log('i='+i);

            //i为1时,j从1变化到3

            //i为2时,j从1变化到3

            //i为3时,j从1变化到3

            for(let j=1;j<=3;j++){

                console.log('j='+j);

            }

        }

        console.log('------------------------------------------');

        // 有三个班级,每个班级有3名学员,输入每个班级每个学员的考试成绩,并计算出每个班级的平均分

        //第一层循环,循环所有的班级

        for(let i=1;i<=3;i++){

            let sum = 0  //定义每个班级的总分

            alert(`请输入第${i}个班级的学生成绩`)

            //第二层循环,循环每个班级的所有学生

            for(let j=1;j<=3;j++){

                //将每一名学员的成绩,累加给班级总分

                sum += parseInt(prompt(`请输入第${i}个班级的第${j}名学员成绩:`))

            }

            //计算每个班级的平均分

            let avg = sum / 3

            alert(`第${i}个班级的平均分是${avg}`)

        }

    </script>

</body>

</html>

弹窗显示为(仅显示第一个班级):

练习题

1.有三个班级,每个班级有四名学生,输入所有学生的成绩,并计算出每个班级的平均分

代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习1</title>

</head>

<body>

    <script>

        // 有三个班级,每个班级有四名学生,输入所有学生的成绩,并计算出每个班级的平均分

        // 并统计出每个班级里面的最高分和最低分

        //第一层循环,循环所有的班级

        for (let i = 1; i <= 3; i++) {

            let sum = 0  //定义每个班级的总分

            let max = 0  //定义每个班级的最高分

            let min = 100  //定义每个班级的最低分

            alert(`请输入第${i}个班级的学生成绩`)

            //第二层循环,循环每个班级的所有学生

            for (let j = 1; j <= 4; j++) {

                //将每一名学员的成绩,累加给班级总分

                let score = parseInt(prompt(`请输入第${i}个班级的第${j}名学员成绩:`))

                // 判断该学员的成绩是否是最高分

                if(max<score){

                    max = score  //重新获取最高分

                }

                // 判断该学员的成绩是否是最低分

                if(min>score){

                    min = score  //重新获取最低分

                }

                sum += score

            }

            // //计算每个班级的平均分

            let avg = sum / 4

            alert(`第${i}个班级的平均分是${avg},班级最高分是${max},最低分是${min}`)

        }

    </script>

</body>

</html>

弹窗显示为(仅显示第一个班级):

2.(1)打印直角三角形

  (2)打印倒直角三角形

  (3)打印等腰三角形

  (4)打印倒等腰三角形

代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习2</title>

</head>

<body>

    <script>

        // 打印直角三角形

        /*

            #

            ##

            ###

            ####

            #####

        */

        console.log('----------------直角(1 2 3 4 5)------------------');

        // 外层循环控制行数   

        for (let i = 1; i <= 5; i++) {

            let str = ""

            // 内层循环控制每行的列数(每行的列数===行号)

            for (let j = 1; j <=i; j++) {

                str += '#'

            }

            console.log(str);

        }

        console.log('----------------直角(1 3 5 7 9)------------------');

        /*

            #

            ###

            #####

            #######

            #########

        */

        // 外层循环控制行数   

        for (let i = 1; i <= 5; i++) {

            let str = ""

            // 内层循环控制每行的列数(每行的列数===行号*2-1)

            for (let j = 1; j <=i*2-1; j++) {

                str += '#'

            }

            console.log(str);

        }

        console.log('----------------倒直角(5 4 3 2 1)------------------');

        /*

            #####

            ####

            ###

            ##

            #

        */

        // 外层循环控制行数   

        for (i=1;i<=5;i++) {

            let str = ""

            // 内层循环控制每行的列数

            for (let j = 6-i; j > 0; j--) {

                str += '#'

            }

            console.log(str);

        }

        console.log('-----------------等腰-----------------');

        /*

            @@@@

            @@@

            @@

            @

            #

            ###

            #####

            #######

            #########

            @@@@#

            @@@###

            @@#####

            @#######

            #########

        */

        // 外层循环控制行数   

        for (let i = 1; i <= 5; i++) {

            let str = ""

            // 内层第一个for,用于补充空格

            for (let j = 5-i; j > 0; j--) {

                str += ' '

            }

            // 内层第二个for,用于打印字符

            for (let j = 1; j <=i*2-1; j++) {

                str += '#'

            }

            console.log(str);

        }

        console.log('-----------------倒等腰-----------------');

        /*

            #########

            @#######

            @@#####

            @@@###

            @@@@#

        */

        // 外层循环控制行数   

        for (let i = 5; i >=1; i--) {

            let str = ""

            // 内层第一个for,用于补充空格

            for (let j = 5-i; j > 0; j--) {

                str += ' '

            }

            // 内层第二个for,用于打印字符

            for (let j = 1; j <=i*2-1; j++) {

                str += '#'

            }

            console.log(str);

        }

    </script>

</body>

</html>

控制台显示:

3.打印空心的等腰三角形

代码:

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习3</title>

</head>

<body>

    <script>

        // 打印空心的等腰三角形

        /*

            @@@@#

            @@@# #

            @@#  #

            @#    #

            #########

        */

        // 外层循环,用于循环行数   

        for (let i = 1; i <= 5; i++) {

            let str = ""

            // 该循环,用于控制每行前面的空格

            for (let j = 5 - i; j >= 1; j--) {

                str += " "

            }

            // 内层循环,控制每行的列数

            for (let j = 1; j <= i * 2 - 1; j++) {

                //每行第一列和最后一列打印#号,其他地方打印空格

                //或是第五行,打印全部#号

                if (j === 1 || j === i * 2 - 1 || i === 5) {

                    str += "#"

                } else {

                    str += " "

                }

            }

            console.log(str);

        }

    </script>

</body>

</html>

控制台显示:

4.打印99乘法表

代码:

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习4</title>

</head>

<body>

    <script>

        // 打印99乘法表

        /*

            1*1=1

            1*2=2 2*2=4

            1*3=3 2*3=6 3*3=9

            ......

        */

        // 整体的形状是:直角三角形   

        for(let i=1;i<=9;i++){

            let str = ""

            for(let j=1;j<=i;j++){

                str+=j+"X"+i+'='+(j*i)+'\t'

            }

            console.log(str);

        }

    </script>

</body>

</html>

控制台显示:

5.数字等腰三角形

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习5</title>

</head>

<body>

    <script>

        // 数字等腰三角形

        /*

                1

              121

              12321

            1234321

            123454321

            第一部分:

            @@@@

            @@@

            @@

            @

            第二部分:

            1

            12

            123

            1234

            12345

            第三部分

            1

            21

            321

            4321

        */

        //外层循环,控制行数

        for (let i = 1; i <= 5; i++) {

            // 内层循环控制每行打印内容

            let str = ""

            // 1.打印左边的空格

            for(let j=1;j<=5-i;j++){

                str += "@"               

            }

            // 2.打印三角形的左侧

            for(let j=1;j<=i;j++){

                str+=j

            }

            // 3.打印三角形的右侧

            for(let j=i-1;j>=1;j--){

                str+=j

            }

            console.log(str);

        }

    </script>

</body>

</html>

控制台显示:

6.找出100以内所有的质数

代码:

<!DOCTYPE html>

<html lang="en">

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>二重循环练习6</title>

</head>

<body>

    <script>

        // 找出100以内所有的质数

        // 什么是质数?只能被1 和 自身整除的数 是质数

        // 第一层循环确定查找的范围

        for(let i=2;i<=100;i++){

          // 定义一个count,用于记录被整除的次数

          let count = 0

            // 第二层循环,确定每次比较的范围

            for(let j=1;j<=i;j++){

                // 假设i是25,j从1到25

                if(i%j===0){

                    count++

                }

            }

            //如果,只有两个数能被i整除,那么i就是质数

            if(count===2){

                console.log(i);

            }

        }

    </script>

</body>

</html>

控制台显示:

在内层循环中,使用continue,break,只是作用于内层循环

代码:

<!DOCTYPE html>

<html>

<head>

    <meta charset="UTF-8">

    <meta http-equiv="X-UA-Compatible" content="IE=edge">

    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <title>在内层循环中,使用continue,break</title>

</head>

<body>

    <script>

        /*

            有5家店,每家店最多可以买3件衣服,进入一家店后,提示是否离开本店,

            输入y表示离开(会进入下一家店),输入n表示买一件衣服,最后输出用户一共买了多少件衣服。

        */

        let count = 0  //定义count,保存购买衣服的总数量

        //外层循环,控制有多少家店

        for(let i=1;i<=5;i++){

            alert('欢迎光临第'+i+'家店')

            //内层循环,控制每家店,可以买多少件衣服

            for(let j=1;j<=3;j++){

                let isLeave = prompt('是否离开(y/n):')

                if(isLeave==='n'){

                    alert('成功购买了一件衣服')

                    count++

                    // 内层循环里面的continue,只是对内层循环起作用

                    continue

                }

                //内层循环里面的break,只是对内层循环起作用

                break; 

            }

        }

        alert('您一共购买了'+count+'件衣服')

    </script>

</body>

</html>

弹窗显示为:


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,245评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,749评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,960评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,575评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,668评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,670评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,664评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,422评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,864评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,178评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,340评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,015评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,646评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,265评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,494评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,261评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,206评论 2 352

推荐阅读更多精彩内容

  • 一,JavaScript的书写格式 1.行内脚本:写在HTML标签内部,通过一个属性节点来添加,不推荐使用,例如“...
    刘远舟阅读 460评论 0 0
  • [if !supportLists]第一章 [endif]基本语法 [if !supportLists]一、[en...
    海绵宝宝_b8a2阅读 519评论 0 0
  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,145评论 0 13
  • css相关 1. 万能居中 1.margin: 0 auto;水平 2.text-align: center;水平...
    chaocc阅读 962评论 0 2
  • JS的单线程模型和事件循环机制 JS的单线程模型意味着,在执行JS时只有一个主线程,每个任务必须顺序执行。如果当前...
    hyy_1754阅读 398评论 0 0