15-循环小demo

05-循环的小demo

1.补0
    <script>
        // 数字小于10,在前面补0
        var num1 = +prompt('请输入0~59的数字');
        var result = num1 < 10 ? '0' + num1 : num1;
        alert(result);
    </script>
2.求出1-100间所有个位数不为3的和(continue)
    <script>
        //需求:求出1-100间所有个位数不为3的和

        // 1.定义一个sum变量来储存和
        var sum = 0;
        // 2.先获取1-100的所有数
        for (var i = 1; i <= 100; i++) {
            // 3.10以下个位是3的数字只有一个,10-100之间的数字需要单独获取个位数
            if (i >= 10 && i < 100) {
                // 4.2位数获取各位数就是对10取模
                var ge = parseInt(i % 10);
                // 5.如果个位数是3,就打印出来并且跳过
                if (ge === 3) {
                    console.log(i);
                    continue;
                }
                // 6.sum加每一个i
                sum += i;
            }
        }
        // 7.输出sum,注意10位数以下也有一个个位数是3的数,需要减去
        console.log(sum - 3);
    </script>
3.求从1开始第35个能被7和3整除的整数
    <script>
        // 需求:求从1开始第35个能被7和3整除的整数

        // 1.定义一个变量储存那个数
        var sum = 0,
            // 2.定义一个变量计算是第几个
            num = 0;
        // 3.循环
        for (var i = 1; i > 0; i++) {
            // 4.能被7整除并且能被3整除
            if (i % 7 === 0 && i % 3 === 0) {
                // 5.产生一个数就自增1
                num++;
                // 6.产生一个数就与sum相加
                sum += i;
            }
            // 7.输出第35个
            if (num === 35) {
                console.log(sum);
                console.log(num);
                break;
            }
        }
    </script>
4.简易的ATM机
    <script>
        // - 里面现存有  100 块钱。
        // - 如果存钱,就用输入钱数加上先存的钱数, 之后弹出显示余额提示框
        // - 如果取钱,就减去取的钱数,之后弹出显示余额提示框
        // - 如果显示余额,就输出余额

        //1.初始余额 100
        var money = 100;
        //2.存钱
        var save = 0;
        //3.取钱1
        var get = 0;

        while (true) {
            var user = +prompt('请输入您要的操作:' + '\n1.存钱' + '\n2.取钱' + '\n3.显示余额' + '\n4.退出');
            //存钱
            if (user === 1) {
                save = +prompt('请输入要存入的金额');
                var res = getBalance();
                alert('您的余额是' + res);
            } else if (user === 2) {//取钱
                get = +prompt('请输入要取出的金额');
                var res = getBalance();
                if (res >= 0) {
                    alert('您的余额是' + res);
                } else {//余额不足
                    alert('余额不足');
                }
            } else if (user === 3) {//显示余额
                var res = getBalance();
                alert('您的余额是' + res);
            } else if (user === 4) {//退出
                break;
            } else {
                alert('指令有误,请输入1~4指令');
            }
        }
        function getBalance() {
            var balance = money + save - get;
            return balance;
        }
    </script>
5.登录
    <script>
        // 需求:用户输入用户名和密码,只要不是admin、888888就一直提示用户名或密码错误,请重新输入。
        // 1.接收用户输入的用户名
        var user = prompt('用户名');
        // 2.接收用户输入的密码
        var myPass = prompt('密码');

        // true:表示while是一个死循环
        while (true) {
            // 3.如果用户名和密码都正确
            if (user === 'admin' && myPass === '888888') {
                alert('登陆成功,欢迎回来');
                break;  //当用户登陆成功之后,跳出循环。
            } else if (user !== 'admin') {
                alert('用户名错误,请重新输入');
                //4.如果用户名错误,重新弹出输入框接收用户名
                user = prompt('请重新输入用户名');
            } else {
                alert('密码错误');
                //4.如果密码错误,重新弹出输入框接收密码
                myPass = prompt('请重新输入密码');
            }
        }
    </script>

do...while

    <script>
        // 直到密码正确才停止
        do {
            var user = prompt('请输入用户名');
            var mypass = prompt('请输入密码');
        } while (user !== 'admin' || user !== '123456')
    </script>

三次机会

    <!-- 密码 -->
    <script>
        // 1.获取用户输入的东东
        var uPass = prompt('请输入密码');

        // 2.判断
        if (uPass !== '88888') {
            // 3.三次机会
            for (var i = 2; i > 0; i--) {
                uPass = prompt('密码错误,您还有' + i + '次机会');
            }
            alert('登录失败,账号锁定');
        } else {
            alert('登陆成功');
        }
    </script>

q强制退出

    <script>
        // 输入密码,知道密码正确或输入q才停止程序
        // 1.获取用户输入的东东
        var user = prompt('请输入用户名');
        var uPass = prompt('请输入密码');

        // 3.进入死循环
        while (true) {
            // 如果输入正确,出循环
            if (user === 'admin' && uPass === '888888') {
                alert('登陆成功');
                break;
            } else {
                // 不正确一直重新输入
                user = prompt('请重新输入用户名');
                uPass = prompt('请重新输入密码');
                // 4.输入q强制退出
                if (user === 'q' || uPass === 'q') {
                    break;
                }
            }
        }
    </script>
6.录年龄
    <script>
        //需求:输入5个人的年龄,计算年龄之和和平均年龄,如果年龄为负数或大于100,则提示错误重新输入
        // 1.定义sum接收年龄
        var sum = 0;
        // 2.循环5次
        for (var i = 1; i <= 5; i++) {
            // 3.定义age接收用户输入的年龄
            var age = +prompt('请输入第' + i + '个人的年龄');

            // 4.建立一个死循环
            while (true) {
                // 5.如果用户输入不为空
                if (age !== '') {
                    // 6.sum加上每一个age
                    sum += age;
                    // 7.当年龄有误
                    while (age < 0 || age > 100) {
                        // 8.减去输错的年龄
                        sum -= age;
                        // 9.重新赋值年龄
                        age = +prompt('第' + i + '个人年龄有误请重新输入年龄');
                        // 10.重新计算年龄
                        sum += age;
                    }
                    // 最终退出循环
                    break;
                } else {
                    // 11.如果用户输入为空就让他重新输入
                    var age = +prompt('输入错误:请重新输入第' + i + '个人的年龄');
                }
            }
        }
        alert('年龄总和是:' + sum + '\n平均年龄是:' + sum / 5);
    </script>
7.水仙花数
    <!-- 水仙花:三位数,且各位上的数立方和等于它本身 -->
    <!-- abc = a*a*a + b*b*b + c*c*c -->
    <script>
        // 1.遍历所有的三位数
        for (var i = 100; i <= 999; i++) {
            // 2.取每个位上的数值
            var ge = i % 10;
            var shi = parseInt(i / 10 % 10);
            var bai = parseInt(i / 100 % 10);
            // 3.判断是否为水仙花
            if ((ge * ge * ge + shi * shi * shi + bai * bai * bai) === i) {
                console.log(i);
            }
        }
    </script>
8.图形类

正方形

    <script>
        var start = '';
        // 外层循环控制行
        for (var i = 0; i < 5; i++) {
            // 内层循环控制列
            for (var j = 0; j < 5; j++) {
                start += '卍';
            }
            start += '\n';
        }
        console.log(start);
    </script>

正反直角三角形

    <script>
        // 1.定一个字符串
        var start = '';
        for (var i = 0; i < 10; i++) {
            // 正直角三角形
            for (var j = 0; j < i; j++) {
                start += '卍';
            }
            start += '\n';
            // 倒直角三角形
            for (var j = i; j < 10; j++) {
                document.write('卍');
            }
            document.write('</br>');
        }
        console.log(start);
    </script>

等腰三角形

    <script>
        // 1.获取要的行
        var row = +prompt('你要几行的?');
        // 外层行
        for (var i = 1; i <= row; i++) {
            //前空格
            for (var r = row - i; r >= 0; r--) {
                document.write(' ');
            }
            // 卍
            for (var j = 1; j <= 2 * i - 1; j++) {
                document.write('卍');
            }
            // 后空格
            for (var r = row - i; r >= 0; r--) {
                document.write(' ');
            }
            document.write('</br>');
        }
    </script>


菱形

     <script>
        // row = 6
        // 菱形上:1, 3, 5, 7, 9,11
        // * = 2n-1
        var row = +prompt("输入行数");
        // 上面一个等腰三角形
        for (var i = 1; i <= row; i++) {
            // 空格=总行数-当前行,递减
            for (var r = row - i; r >= 0; r--) {
                document.write(' ');
            }
            for (var j = 1; j <= 2 * i - 1; j++) {
                document.write('卍');
            }
            document.write('</br>');
        }
        // 下面一个少一个定边的等腰三角形
        // 菱形下:9,7,5,3,1
        // 卍 = (2*(6-当前行))-1
        for (i = 1; i <= row - 1; i++) {
            // _从0开始
            for (r = 0; r <= i; r++) {
                document.write(' ');
            }
            for (j = (2 * (row - i)) - 1; j >= 1; j--) {
                document.write('卍')
            }
            document.write('</br>');
        }
    </script>

9.组数字
    <script>
        // 有 1 、 2 、 3 、 4 个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?
        // 1.定义一个count储存个数
        var count = 0;
        // 2.循环4次百位
        for (var a = 1; a <= 4; a++) {
            // 3.循环4次十位
            for (var b = 1; b <= 4; b++) {
                // 4.循环4次个位
                for (var c = 1; c <= 4; c++) {
                    // 5.个位十位百位互不相等
                    if (a !== b && a !== c && b !== c) {
                        count++;
                        console.log(a * 100 + b * 10 + c);
                    }
                }
            }
        }
        console.log('总共有' + count + '个');
    </script>
10.判断年月日
   <script>
        // 输入年月日,判断输入的日期是这一年的第几天
        // 1.获取用户输入的东东
        var year = parseInt(prompt("请输入年份:"));
        var month = parseInt(prompt("请输入月份:"));
        var day = parseInt(prompt("请输入日期:"));
        // 2.第几天
        var sum = 0;
        //3. 开关
        var flag = true;

        // 4.判断用户输入的是否合理范围
        if (year > 0 && year < 9999 && month <= 12 && month >= 1 && day <= 31 && day >= 1) {
            // 5.遍历月份
            for (var i = 1; i < month; i++) {
                // 大月
                if (i === 1 || i === 3 || i === 5 || i === 7 || i === 8 || i === 10 || i === 12) {
                    sum += 31;
                    // 小月
                } else if (i === 4 || i === 6 || i === 9 || i === 11) {
                    sum += 30;
                    // 二月
                } else if (i === 2) {
                    sum += 28;
                }
            }

        } else {
            alert('您输入的日期有误');
            // 输入错误,关闭开关,退出选混
            flag = false;
        }

        // 7.闰年的2月有29天,所以2月以后的月份日子都+1
        if ((year % 4 === 0 && year % 100 !== 0 || year % 400 === 0) && month > 2) {
            sum += (day + 1);
        } else {
            sum += day;
        }
        if (flag) {
            alert('您输入的日期为' + year + '年' + month + '月' + day + '日' + '\n是这年的第' + sum + '天');
        }
    </script>
11.翻转数字
    <!-- 输入一个数,弹出这个数字的反转数 -->
    <script>
        var num = prompt('请输入一个数字');
        // 反转数
        var num1 = 0;
        while (num >= 10) {
            // 个位
            num1 = num % 10;

            // 十位
            num = parseInt(num / 10 % 10);
            alert(num1 * 10 + num);
        }
    </script>
12.九九乘法表(tabel版本)
    <script>
        // 套一个表格标签
        document.write('<table>');
        // 1.外层控制行
        for (var i = 1; i <= 9; i++) {
            // 每行前都套一个tr
            document.write('<tr>');
            // 2.内层控制列
            for (var j = 1; j <= i; j++) {
                // 每列前套一个td
                document.write('<td>')
                document.write(i + '*' + j + '=' + i * j + '&emsp;');
            }
            // 列结束套一个td闭合
            document.write('</td>')
        }
        // 行结束后补tr闭合标签
        document.write('<tr>');
        // 表格标签结尾
        document.write('</table >');
    </script>
posted @ 2020-04-20 18:30  小艾同学喔  阅读(257)  评论(0编辑  收藏  举报