循环和分支语句小练习

80 阅读1分钟
  1. 输出null的类型

     console.log(typeof null);   //结果返回object
     console.log(Object.prototype.toString.call(null));  //结果返回null
    
     //两种输出的方法
     var year = 2022
     var month = 9
     var day = 28
     console.log(year + '年' + month + '月' + day + '日');
     console.log(year, '年', month, '月', day, '日');
     document.write(year, '年', month, '月', day, '日', '<br>')
    
  2. 计算1+2+...+100的和

     var sum = 0
     for (var i = 0; i <= 100; i++) {
         sum += i
     }
     console.log(sum);
    
  3. 判断一个三位数数是否是水仙花数

     水仙花数:每个位上的数字的 3次幂之和等于它本身。例如:1^3 + 5^3+ 3^3 = 153
     for (var num = 100; num < 1000; num++) {
         a = parseInt(num / 100)         // a 是百位数
         b = parseInt(num % 100 / 10)    // b 是十位数
         c = num % 10                    // c 是个位数
         if (a ** 3 + b ** 3 + c ** 3 == num) {      // a ** 3 代表 a的3次方
             console.log(num + '是水仙花数');
         }
     }
    
  4. 输入一个数字日期,判断日期是这一年的第几天 例如:20160211 输出第42天

    function days(date) {
        var sum = 0
        var year = parseInt(date / 10000)            // year 年
        var month = parseInt(date % 10000 / 100)    // month 月
        var days = date % 10000 % 100               // days 日
        var day       //day 每个月有多少天                             
        for (var i = 1; i < month; i++) {
            // 计算每个月份有几天,利用switch穿透现象节省代码
            switch (i) {
                case 1:
                case 3:
                case 5:
                case 7:
                case 8:
                case 10:
                case 12:
                    day = 31
                    break
                case 4:
                case 6:
                case 9:
                case 11:
                    day = 30
                    break
                case 2:
                    // 判断二月有几天 (平年和闰年)
                    year % 4 == 0 && year % 100 != 0 || year % 400 == 0 ? day = 29 : day = 28
            }
            sum += day
        }
        sum += days
        return sum
    }
    console.log(days(20081231));
    
  5. 在 1000 到 2000 的数字内, 需要求出 是 4的倍数, 且不是100的倍数 的那个数字

    // 设置num计数器
     var num = 0
     for (var i = 1000; i <= 2000; i++) {
         if (i % 4 == 0 && i % 100 != 0) {
             document.write(i + ' ')
             num++
         }
         //每输出8个换一次行
         if (num == 8) {
             document.write('<br>')
             //计数器清零
             num = 0
         }
     }
    
  6. 判断一个数(num)是否为质数

     // var num = prompt('请输入需要判断是否为质数的数') - 0    //把 num 隐式转换成Number型
     var num = 7
     if (num >= 2) {
         for (var i = 1; i < num; i++) {
             if (num % i == 0 && i != 1) {
                 console.log(num + '不是质数');
                 break
             }
             if (i == num - 1) console.log(num + '是质数');
         }
     } else console.log(num + '不是质数');
    
  7. 输出乘法表

     document.write('<table style="border-collapse:collapse">')
     for (var i = 1; i <= 9; i++) {
         document.write("<tr>")
         for (var j = 1; j <= i; j++) {
             document.write('<td style="border: solid 1px #000">' + j + '*' + i + '=' + i * j + '</td>')
         }
         document.write('</tr>')
     }
     document.write('</table>')
    
  8. 苹果3元一个,梨2元一个,桃子1元一个.现在想用200元正好买100个水果,用JS列出所有的购买方案

     //方法一:
     for (var i = 0; i <= 100; i++) {
         for (var j = 0; j <= 100 - i; j++) {
             if (i * 3 + 2 * j + (100 - i - j) == 200) document.write(i + '个苹果', j + '个梨', 100 - i - j + '个桃子' + '<br>');
         }
     }
     //方法二:
     for (var i = 0; i <= 100; i++) {
         for (var j = 0; j <= 100; j++) {
             for (var k = 0; k <= 100; k++) {
                 if (i + j + k == 100 && 3 * i + 2 * j + k == 200) console.log(i + '个苹果', j + '个梨', 100 - i - j + '个桃子');
             }
         }
     }