Javascript从零基础到精通——循环结构(附15道练习题)

循环结构

while循环

while(条件){
    //条件成立就会反复执行这里的代码
}
var count = 0;
while(count < 10){
    count++;
    document.write("Hello world");
}
死循环: 没有终止条件的循环即为死循环,在代码中应尽量避免死循环

do…while循环

do {
    //先执行一遍代码
    //while条件成立再继续反复执行
} while (条件)

break和continue关键字
break:跳出循环体,整个循环结束
continue:结束本次循环进入下一次循环体

for循环

for (var i = 0; i < 10; i++) {
    console.log(i);
}
区别

while和do…while循环的区别
do…while循环至少会执行一遍,不管条件是否成立,但是while循环如果初始条件不成立一遍也不会执行

三种循环的联系和区别

1、都是会反复执行的代码块
2、大部分情况下可以互相替换
3、do…while至少执行一次,while和for有可能0次,while不太能确定执行次数,for绝大部分情况下都可以确定

循环结构练习

1. 打印100以内的所有奇数

		var i = 0;
        var num = 0;
        while (i < 50) {
            num = 2 * i + 1;
            document.write(num + " ");
            i++;
        }

2. 打印一个数的所有因数

        var num = Number(prompt('请输入一个数:'));
        for (var i = 0; i < num; i++) {
            if (num % i == 0) {
                document.write(i + " ");
            }
        }

3. 入职薪水10K,每年涨幅5%,50年后工资多少?

		var money = 10000;
        var year = 1;
        while (year <= 50) {
            money *= (1 + 0.05);
            year++;
        }
        document.write('50年后工资为' + money.toFixed(2) + " ");

4. 逢7过游戏,打印1-100,遇到能被7整除或者带7的数字打印“过”代替

        var shi, ge;
        for (var i = 0; i <= 100; i++) {
            shi = parseInt(i / 10);
            ge = i % 10;
            if (i % 7 === 0 || i % 10 === 7 || shi === 7 || ge === 7) {
                document.write('过' + " ");
            } else {
                document.write(i + " ");
            }
        }

5. 一张纸的厚度是0.0001米,将纸对折,对折多少次厚度超过珠峰高度8848米(27次)

		// for循环
        var h = 0.0001;
        for (var i = 1; i < 30; i++) {
            h *= 2;
            if (h > 8848) {
                document.write("对折" + i + "厚度超过珠峰高度8848米");
                break;
            }
        }
        // while循环    循环次数不确定时,用while比较好
        var h = 0.0001;
        var count = 0;
        while (h <= 8848) {
            h *= 2;
            count++;
        }
        document.write("对折" + count + "厚度超过珠峰高度8848米");

6. 打印100以内所有偶数的和

        var count = 0;
        for (var i = 0; i <= 50; i++) {
            count += 2 * i;
        }
        document.write(count);

7. 求出1-1/2+1/3-1/4……1/100的和

		var n = 0
        var sum = 0;
        for (var i = 1; i <= 100; i++) {
            if (i % 2 === 0) {
                n = -i;
            } else {
                n = i;
            }
            sum += 1 / n;
        }
        document.write(sum);

8. 打印出1000-2000年中所有的闰年,并以每行四个数的形式输出

		var count = 0;  // 计数器,记录闰年的个数
        for (var i = 1000; i <= 2000; i++) {
            if (i % 4 === 0 && i % 100 != 0 || i % 400 === 0) {
                document.write(i + " ");
                // 这里代表找出一个闰年了
                count++;
                if (count % 4 === 0) {
                    document.write("<br />");
                }
            }
        }

9. 打印*三角形

/*
            *
            **
            ***
            ****
            *****

            规律:
                第一行  i = 1   j = 1
                第二行  i = 2   j = 1   j = 2
                第三行  i = 3   j = 1   j = 2   j = 3
        */
        // 循环行数
        for (var i = 1; i <= 5; i++) {
            // 循环*个数
            for (var j = 1; j <= i; j++) {
                document.write('*');
            }
            // 循环完*,换行
            document.write("<br>");
        }

10. 输出100-200之间所有的素数(只能被1和自己整除的数)

		document.write('100-200之间所有的素数: ');
        for (var i = 100; i <= 200; i++) {
            // 创建一个判断变量,假设全是素数
            var flag = true;
            for (var j = 2; j < i; j++) {
                // 如果i不是素数,设置为flase,并退出循环
                if (i % j === 0) {
                    flag = false;
                    break;
                }
            }
            // 如果i是素数,则打印
            if(flag){
                document.write(i + " ");
            }
        }

11. 打印100–200之间所有能被3或者7整除的数

        document.write("100-200之间能被3或者7整除的数有: ");
        for (var i = 100; i <= 200; i++) {
            if (i % 3 === 0 || i % 7 === 0) {
                document.write(i + " ");
            }
        }

12. 计算100的阶乘

		var count = 1;
        for (var i = 1; i <= 100; i++) {
            count *= i;
        }
        document.write("100的阶乘为:" + count);

13. 求100-999之间的水仙花数

		document.write("100-999之间的水仙花数有: <br>");
        var bai,
            shi,
            ge;
        for (var i = 100; i < 1000; i++) {
            bai = parseInt(i / 100);
            shi = parseInt((i - bai * 100) / 10);
            ge = i % 10;
            if (i === bai * bai * bai + shi * shi * shi + ge * ge * ge) {
                document.write(i + " ");
            }
        }

14. 打印九九乘法表

		/*
            1*1=1
            1*2=2 2*2=4
            1*3=3 2*3=6 3*3=9
            1*4=4 2*4=8 3*4=12 4*4=16
        */
        document.write("九九乘法表: <br>");
        for (var i = 1; i < 10; i++) {
            for (var j = 1; j <= i; j++) {
                document.write(j + "×" + i + '=' + i * j + " ");
            }
            document.write('<br>');
        }

15. 求1+2!+3!+…+20!的值

		var sum = 0;
        for (var i = 1; i <= 20; i++) {
            // 每次从1开始乘
            var count = 1;
            for (var j = 1; j <= i; j++) {
                count *= j;
            }
            sum += count;
        }
        document.write("1+2!+3!+...+20!的值为: " + sum);
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端技术迷

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值