JavaScript小作业(3)

问题:写一个方法,求两个数的最大公约数和最小公倍数。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>求两个数的最大公约数和最小公倍数</title>
    </head>
    <body>
        <input type="text" id="one"  placeholder="请输入第一个数"/><br />
        <input type="text" id="two"  placeholder="请输入第二个数"/><br />
        <input type="button" value="点击求最大公约数" onclick="run1()" /><br />
        <input type="button" value="点击求最小公倍数" onclick="run2()" /><br />
        <script type="text/javascript">
            var num1 = document.getElementById("one");
            var num2 = document.getElementById("two");
            var num;
            function run1(){
                var num3 = num1.value;
                var num4 = num2.value;

                if(num3>=num4)
                    num=num3;
                    else
                    num=num4;
                do{
                    num=num-1;
                }
                while(num3%num!==0 && num4%num!==0)
                if (num3%num!==0 || num4%num!==0)
                {
                    num=1;
                    alert("无最大公约数");
                }
                else 
                alert("两个数的最大公约数是:"+num);
            }


            function run2(){
                var maxNum = num1.value*num2.value/num;
                alert("两个数的最小公倍数是:"+maxNum);
            }

        </script>
    </body>
</html>

Tips:
如上为运用do…while循环,且利用最大公约数求最小公倍数的方法;
特别注意:!!!! 要考虑没有最大公约数的情况。充分使程序严谨!!!

运用while循环,且不利用最大公约数求最小公倍数的方法如下:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>求两个数的最大公约数和最小公倍数</title>
    </head>
    <body>
        <input type="text" id="one"  placeholder="请输入第一个数"/><br />
        <input type="text" id="two"  placeholder="请输入第二个数"/><br />
        <input type="button" value="点击求最大公约数" onclick="run1()" /><br />
        <input type="button" value="点击求最小公倍数" onclick="run2()" /><br />
        <script type="text/javascript">
            var num1 = document.getElementById("one");
            var num2 = document.getElementById("two");
            var numMax;
            var numMin;
            var num;
            function run1(){
                var num3 = num1.value;
                var num4 = num2.value;

                if(num3>=num4){
                   numMin=num4;
                   numMax=num3;}
                else{
                    numMax=num4;
                    numMin=num3;}

                while(num3%numMin!==0 && num4%numMin!==0)
                {
                    numMin=numMin-1;
                    break;
                }

                if (num3%numMin!==0 || num4%numMin!==0)
                {
                    alert("无最大公约数");
                }
                else 
                alert("两个数的最大公约数是:"+numMin);
            }


            function run2(){
                var i=1;
                num=numMax;
                while(num % num1.value !==0 || num % num2.value !==0)
                {   
                 i++;
                 num = numMax*i;
                }

                alert("两个数的最小公倍数是:"+num);
            }

        </script>
    </body>
</html>

Tips:
if…else 如果对应 该执行程序超过一行,务必加上{};
运用while函数时,要充分考虑是否需要Break 来防止陷入死循环;
如果单独求最小公倍数时,谨防直接
/*
numMax=numMax*i;
i++;
*/

这样会使求出来的值不为最小公倍数,如:
3和7,按照此方法,求得最小公倍数为:7*2*3=42;
一定要重新定义一个变量,只有这样才能使 二者中的最大值,每次用其本身乘以i,而不是用上一次其乘以i的值来乘以这一次的i;导致其没有求出我们要求的值。

问题: 写一个方法,给定一个五位数,然后把它逆序输出。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>将一个五位数倒置</title>
    </head>
    <body>
        <input type="text" id="num" placeholder="请输入一个五位数" />
        <input type="button" value="点击进行倒置" onclick="run()" />

        <script type="text/javascript">

            function run(){
                var Num =document.getElementById("num").value;
                if (Num /10000>=10 || Num/10000 <=1)
                {
                    alert("您输入的不为五位数,请重新输入一个五位数。")
                }
                else{
                    var arr=Num.split("");
                    arr.reverse();
                    var Num1=arr.join("");
                    alert("您输入的五位数倒置后为:"+Num1);
                }
                            }
        </script>
    </body>
</html>

Tips:
题目中要求输入的为五位数,则应该在输入条件中限制,非五位数应该自动提示为非五位数;
本题首先用到Split的相关概念(我也不太懂,百度到的):
这里写图片描述
这里写图片描述
其次用到 Array 时更要注意的对象方法:
join(”“)

把数组的所有元素放入一个字符串,元素通过指定分隔符进行分隔。

问题:写一个方法,求给定的四位整数的各个位数之和。

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>求一个四位整数各个位数的和</title>
    </head>
    <body>
        <input type="text" id="one"  placeholder="请输入一个四位整数"/>
        <input type="button" value="点击计算该四位整数各个位数的和"  onclick="run()"/>

        <script type="text/javascript">
        function run ()   
        {
            var num =document.getElementById("one").value
            if (num/1000 >9 || num/1000<1)
            {
                alert("您输入的不是四位整数,请核实后重新输入");
            }

            else
            {
                var arr =num.split("");
                var num1= parseInt(arr[0]) + parseInt(arr[1]) + parseInt(arr[2]) + parseInt(arr[3]);

            };
                alert("您输入的四位整数的各项位数和为:"+num1);




        } 
        </script>
    </body>
</html>

Tips:
用到跟上题一样的,将字符串,转换成数组;
特别注意,如果要将数组中的各个元素 进行求和运算,应首先用 parseInt();
将其转换为整形,再进行运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值