10个JS常见算法题目

10个JS常见算法题目1、冒泡排序调优(从小到大排序)2、输出九九乘法表3、输出水仙花数4、1–10的阶乘和5、输出1900年至2100年中的所有闰年6、输出10–100之间的所有素数7、1,2,3,4四个数字,能组合成多少种互不相同且没有重复的三位数8、取出四位数中的各个位上的数字9、猴子吃桃问题10、用星号输出菱形。源码如下:js算法题目练习&…

大家好,又见面了,我是你们的朋友全栈君。

1、冒泡排序调优(从小到大排序)
2、输出九九乘法表
3、输出水仙花数
4、1–10的阶乘和
5、输出1900年至2100年中的所有闰年
6、输出10–100之间的所有素数
7、1,2,3,4四个数字,能组合成多少种互不相同且没有重复的三位数
8、取出四位数中的各个位上的数字
9、猴子吃桃问题
10、用星号输出菱形。
源码如下:

js算法题目练习

<!-- 2、输出九九乘法表 -->
<script type="text/javascript">
    // 内容提示
    console.log("2、输出九九乘法表:");
    // 定义一个string类型的变量,用于存放乘法表结果
    var output2 = "";
    // 第一层循环,第一个因数,1~9
    for (var i = 1; i <= 9; i++) {
        // 第二层循环,第二个因数,1~i
        for (var j = 1; j <= i; j++) {
            // j*i = j * i,制表符用来对齐
            output2 += j + "*" + i + "=" + i * j + "\t";
        }
        // 每一行输出后,增加换行
        output2 += "\n";
    }
    // 输出乘法表结果
    console.log(output2);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 3、输出水仙花数 -->
<script type="text/javascript">
    // 内容提示
    console.log("3、输出水仙花数");
    // 定义三个变量,用于取出三位数的百位,十位,千位
    var a = 0,
        b = 0,
        c = 0;
    // 定义一个string类型的变量,用于存放计算结果
    var output3 = "水仙花数有:";
    // 从101到999循环,水仙花数是一个三位数
    for (var num = 101; num <= 999; num++) {
        // 取出百位
        a = parseInt(num / 100);
        // 取出十位
        b = parseInt(num % 100 / 10);
        // 取出个位
        c = parseInt(num % 100 % 10);
        // 判断是否满足水仙花数的条件
        if (a * a * a + b * b * b + c * c * c == num) {
            // 将满足条件的数存入结果
            output3 += num + " ";
        }
    }
    // 输出结果
    console.log(output3);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 4、1--10的阶乘和 -->
<script type="text/javascript">
    // 内容提示
    console.log("4、1--10的阶乘和");
    // 定义结果
    var result = 0;
    // 定义阶乘结果
    var factorial = 1;
    // 第一层循环表示从1到10循环
    for (var i = 1; i <= 10; i++) {
        // 第二层循环表示求1到10的每一个数的阶乘的过程
        for (var j = 1; j <= i; j++) {
            // 求阶层的方法
            factorial = factorial * j;
        }
        // 将每次循环的阶乘结果加到定义的结果中
        result = result + factorial;
        // 阶乘结果每次循环之后回到初始值
        factorial = 1;
    }
    // 输出最终的阶乘和的结果
    console.log("1--10的阶乘和为:" + result);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 5、输出1900年至2100年中的所有闰年 -->
<script type="text/javascript">
    // 内容提示
    console.log("5、输出1900年至2100年中的所有闰年");
    // 定义结果集,并给出提示,用于储存结果
    var result5 = "1900年至2100年中的所有闰年有:\n";
    // 设置一个标志,用来判断每行是否有5个年份
    var flag = 0;
    // 1900-2100循环,依次计算
    for (var year = 1900; year <= 2100; year++) {
        // 判断是都满足闰年的条件
        if ((parseInt(year % 4) == 0) && (((parseInt(year % 100) != 0)) || (parseInt(year % 400) == 0))) {
            // 满足条件的年份放入结果集中并加入空格隔开
            result5 += year + "\t";
            // 每往结果集中放一个年份标志加1
            flag++;
        }
        // 如果标志等于5,表示每一行有了5个年份,需要换行操作
        if (flag == 5) {
            // 结果集中加入换行
            result5 += "\n";
            // 重置标志
            flag = 0;
        }
    }
    // 输出最终结果
    console.log(result5);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 6、输出10--100之间的所有素数 -->
<script type="text/javascript">
    // 内容提示
    console.log("6、输出10--500之间的所有素数");
    // 定义结果集,用于储存后面计算得出的素数并提示
    var primeNumbers = "10--500之间的所有素数有:\n";
    // 定义一个是否到了5的标志,用于后面控制是否一行有5个数字
    var areFive = 0;
    // 10到500循环,一次利用下面的算法进行判断
    for (var num = 10; num <= 500; num++) {
        // 定义标志,用来判断能不能被除1和自己本身的其他数整除
        var flag = true;
        // 用第一次循环中的每一个数,来除以除1和他本身的之间的所有整数
        for (var i = 2; i <= num - 1; i++) {
            // 判断这个数除以除1和他本身的之间的所有整数是否有能被整除的情况
            if (num % i == 0) {
                // 如果能被除1和他本身的之间的所有整数整除,标志设置为false
                flag = false;
                // 跳出本次循环,当前数字不是素数
                break;
            }
        }
        // 如果标志flag在上一步没有被设置成false,表示该数为素数
        if (flag == true) {
            // 将该次循环中的数字放入结果集中,并增加制表符来对齐
            primeNumbers += num + "\t\t";
            // 每写入一个素数,判断是否有5个的标志增加1
            areFive++;
        }
        // 如果判断是否有5个的标志到了5
        if (areFive == 5) {
            // 给结果集增加一个换行
            primeNumbers += "\n";
            // 重置标志
            areFive = 0;
        }
    }
    // 输出最终的结果
    console.log(primeNumbers);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 7、1,2,3,4四个数字,能组合成多少种互不相同且没有重复的三位数 -->
<script type="text/javascript">
    // 内容提示
    console.log("7、1,2,3,4四个数字,能组合成多少种互不相同且没有重复的三位数");
    // 定义记数标志
    var count = 0;
    // 定义结果集,存放结果
    var result7 = "能组合成的互不相同且没有重复的三位数有:\n";
    // 三次循环表示三位数,每次循环,都是1,2,3,4
    for (var i = 1; i <= 4; i++) {
        for (var j = 1; j <= 4; j++) {
            for (var k = 1; k <= 4; k++) {
                // 如果三个数字都不相等
                if (i != j && j != k && k != i) {
                    // 组合成一个三位数
                    var sum = 100 * i + 10 * j + k;
                    // 存储到结果集中
                    result7 += sum + "  ";
                    // 记数标志加1
                    count++;
                }
            }
        }
    }
    // 换行后在结果中加入种数
    result7 += "\n一共有" + count + "种";
    // 输出结果
    console.log(result7);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 8、取出四位数中的各个位上的数字 -->
<script type="text/javascript">
    // 内容提示
    console.log("8、取出四位数中的各个位上的数字:");
    //定义一个四位数 
    var num = 4578;
    // 输出原四位数
    console.log("原四位数是:" + num);
    // 取出千位
    var a = num / 1000;
    // 取出百位
    var b = num % 1000 / 100;
    // 取出十位
    var c = num % 1000 % 100 / 10;
    // 取出个位
    var d = num % 1000 % 100 % 10;
    //取出个位的另一种
    //var d = num % 10;
    console.log("千位是:" + parseInt(a) + ",百位是:" + parseInt(b) + ",十位是:" + parseInt(c) + ",个位是:" + parseInt(d));
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 9、猴子吃桃问题 -->
<script type="text/javascript">
    // 内容提示
    console.log("9、猴子吃桃问题:");
    console.log("猴子吃桃子问题:猴子第一天摘下N个桃子,当时就吃了一半,还不过瘾,就又吃了一个。");
    console.log("\t\t\t第二天又将剩下的桃子吃掉一半,又多吃了一个。以后每天都吃前一天剩下的一半零一个。");
    console.log("\t\t\t到第10天在想吃的时候就剩一个桃子了。求第一天共摘下来多少个桃子?");
    // 定义总数
    var sum = 1;
    // 按照题目从第10天往前计算
    for (var i = 1; i < 10; i++) {
        sum = (sum + 1) * 2;
    }
    // 输出结果
    console.log("计算答案:第一天共摘下来的桃子个数是" + sum + "个");
    // 输出换行,区分下一块内容
    console.log("\n");
</script>

<!-- 10、用星号输出菱形 -->
<script type="text/javascript">
    // 内容提示
    console.log("10、用星号输出菱形");
    // 定义结果集,用来存放星号和空格
    var result10 = "";
    // 定义菱形宽度
    var width = 10;
    // 菱形上半部分,循环递增
    for (var i = 1; i <= width; i++) {
        // 菱形上半部分,空格递减
        for (var a = width - i; a >= 1; a--) {
            result10 += " ";
        }
        // 菱形上半部分,星号递增
        for (var j = 1; j <= i * 2 - 1; j++) {
            result10 += "*";
        }
        // 每一行结束后换行
        result10 += "\n";
    }
    // 菱形下半部分,循环递减
    for (var i = width - 1; i >= 1; i--) {
        // 菱形下半部分,空格递增(递减的递减)
        for (var a = width - i; a >= 1; a--) {
            result10 += " ";
        }
        // 菱形下半部分,星号递减(递减的递增)
        for (var j = 1; j <= i * 2 - 1; j++) {
            result10 += "*";
        }
        result10 += "\n";
    }
    console.log(result10);
    // 输出换行,区分下一块内容
    console.log("\n");
</script>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/148120.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • python和java哪个值得学-Python和Java学哪个好?大家是怎么选的

    python和java哪个值得学-Python和Java学哪个好?大家是怎么选的Python和Java学哪个好?很多开始学习编程的同学就很难选择,过去几年选择Java无话可说,近年来大家都开始关注人工智能这一方向,都觉得人工智能是未来的趋势,选择Java就会和人工智能失之交臂,确实,但大家要知道,想从事人工智能方面的工作,学的可不只有Python,更需要你会各种复杂的计算,数据分析,推演,超强的思维等等。Java是一门成熟发展20多年编程语言,开发使用率极高,目前java市场…

    2022年7月7日
    21
  • Object与json字符串的相互转换[通俗易懂]

    Object与json字符串的相互转换[通俗易懂]第一步:引入fastjson的依赖jar包注:maven项目,直接在pom.xml中进行配置即可。注:如果引入此版本的依赖,导致项目不能启动(报错:找不到启动类);那么可以换一个版本的fastjson即可。给出文字版:<!–fastjson–><dependency><groupId>com.alibaba</…

    2022年10月10日
    4
  • 闫学灿acwing_AAU BBU RRU

    闫学灿acwing_AAU BBU RRU给定一个包含 n 个点 m 条边的有向图,并给定每条边的容量,边的容量非负。图中可能存在重边和自环。求从点 S 到点 T 的最大流。输入格式第一行包含四个整数 n,m,S,T。接下来 m 行,每行三个整数 u,v,c,表示从点 u 到点 v 存在一条有向边,容量为 c。点的编号从 1 到 n。输出格式输出点 S 到点 T 的最大流。如果从点 S 无法到达点 T 则输出 0。数据范围2≤n≤1000,1≤m≤10000,0≤c≤10000,S≠T输入样例:7 14 1 71 2

    2022年8月9日
    7
  • show contrl e1 解释

    show contrl e1 解释

    2021年8月5日
    59
  • golang 设置代理

    golang 设置代理goenv-wGOPROXY=https://goproxy.cn,direct阿里云配置如下:exportGOPROXY=https://mirrors.aliyun.com/gopro

    2022年7月1日
    26
  • UART和USART的区别(UART vs USART)[通俗易懂]

    UART和USART的区别(UART vs USART)[通俗易懂]很多工程师都知道UART和USART都是一样的,没有区别。但实际上,两者彼此不同,并且具有不同的属性。这就是我在这里写一篇文章UARTvsUSART的原因。但在研究UART和USART(UART与USART)之间的主要区别之前,我想先解释一下什么是异步和同步通信。异步串行传输:在异步通信中,发送方和接收方之间没有公共时钟。它广泛用于面向字节的传输,这意味着它一次可以发送1个字节或字符。与同步相比,异步通信速度较慢,并且还具有启动和停止位的开销。在异步通信中…

    2022年5月19日
    55

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号