【JS循环结构 习题练习】

知识点回顾:for(){ }循环

1、找到离100最近的一个水仙花数。例:水仙花数 153=1*1*1+5*5*5+3*3*3

        for (var num = 100; num >= 100; num++) {
            var hundred = parseInt(num / 100);//声明变量hundred来装百位数
            var ten = parseInt(num % 100 / 10);//声明变量ten来装十位数
            var unit = num % 100 % 10;//声明变量unit来装个位数
            if (num === (hundred * hundred * hundred) + (ten * ten * ten) + (unit * unit * unit)) {
                console.log(num + '这个数是离100最近的一个水仙花数');
                break;
            }
        }

2、用 * 画平行四边形。

        for (var i = 1; i <= 4; i++) {
            //画空格
            for (var k = 1; k <= 4 - i; k++) {
                document.write('&nbsp;')
            }
            //画星星
            for (var j = 1; j <= 4; j++) {
                document.write('*')
            }
            document.write('<br>')
        }

3、用 * 画等腰三角形。

        // i=1时 j=1
        // i=2时 j=3
        // i=3时 j=5
        // i=4时 j=7
        // 规律:j=2*i-1
        for (var i = 1; i < 5; i++) {
            for (var m = i; m <= 4; m++) {
                document.write("&nbsp")
            }
            for (var j = 1; j <= (2 * i - 1); j++) {
                document.write("*");
            }
            document.write("<br>")
        }

 4、序列:1,2,3,5,8,13...。找出第20个数是多少?得出前20个数之和是多少?

        var sum = 3;
        var num1 = 1;
        var num2 = 2;
        for(var i=3;i<=20;i++){ //18次
            var x = num1 + num2;
            sum = sum + x;
            num1 = num2;
            num2 = x;
        }
        console.log('前20个数之和是:',sum);

5、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

        var sum = 2;
        var fenzi = 2;
        var fenmu = 1;
        for (var i = 2; i <= 20; i++) {
            var num = fenmu;
            fenmu = fenzi;
            fenzi = fenzi + num;
            sum = sum + fenzi / fenmu;
        }
        console.log('这个数列的前20项之和 =', sum);

6、计算饭钱:有30个人,其中有男人、女人和小孩,在一家饭馆里吃饭 共花了500元,每个男人各花30元,每个女人各花20元,每个小孩各花10元,问男人、女人和小孩各有几人?

        var man;
        var woman;
        var child;
        for(woman=1;woman<=30;woman++){
            for(man=1;man<=30-woman;man++){
                child=30-woman-man;
                if(man+woman+child==30 && 30*man+20*woman+10*child==500){
                    document.write("男人有"+man+"&nbsp&nbsp","女人有"+woman+"&nbsp&nbsp","小孩有"+child);
                    document.write("<br>")
                }
            }
        

7、找出 2000年到2500年之间哪些是闰年,并且计算一共有多少个?

        var num = 0;
        for (var i = 2000; i <= 2500; i++) {
            //判断是不是闰年
            if ((i % 4 === 0 && i % 100 !== 0) || i % 400 === 0) {
                console.log(i + '年是闰年');
                num++;
            }
        }
        console.log('总共有:', num);

8、将一个正整数分解质因数。例如:输入90,分别打印出90的质因数 2 3 3 5;输入60分别打印出 2 2 3 5 。

        var num = Number(prompt('请输入一个数'));
        for (var i = 2; i <= num; i++) {
            if (num % i === 0) {
                console.log('i=', i);
                num = num / i;
                i--;
            }
        }

9、画九九乘法表

        for (var i = 1; i <= 9; i++) {
            for (var j = 1; j <= i; j++) {
                document.write(j + '*' + i + '=' + j * i + ' ')
            }
            document.write('<br>')
        }

10、有一队兵,他想知道有多少人,便让士兵排队报数:按从1至5报数,最末一个士兵报的数为1;按从1至6报数,最末一个士兵报的数为5;

按从1至7报数,最末一个士兵报的数为4;

最后再按从1至11报数,最末一个士兵报的数为10。编程求韩信至少有多少兵?

        for (var i = 1; i > 0; i++) {
            if ((i % 5 === 1) && (i % 6 === 5) && (i % 7 === 4) && (i % 11 === 10)) {
                console.log('至少有' + i + '个兵');
                break;
            }
        }

11、猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

        var peach = 1
        for (var i = 9; i >= 1; i--) {
            peach = (peach + 1) * 2
        }
        console.log('第一天共摘了:', peach);

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

胡萝卜爱吃小白兔!

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

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

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

打赏作者

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

抵扣说明:

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

余额充值