JavaScript 函数练习题

1、编写一个函数,计算两个数字的和差积商

    <input type="text" id="txt1" placeholder="请输入一个数字">
    <select name="symbol" id="sel">
        <option value="+" id="jia">+</option>
        <option value="-" id="jian">-</option>
        <option value="*" id="cheng">*</option>
        <option value="/" id="chu">/</option>
    </select>
    <input type="text" id="txt2" placeholder="请输入一个数字">
    <span> = </span>
    <input type="text" id="txt3" disabled>
    <button id="btn">点击计算</button>

    <script>
        btn.onclick = function(){
            // 通过 btn 来获取到页面中的输入的数据

            // 获取页面中文本框中输入的值
            var num1 = document.getElementById("txt1");
            var num2 = document.getElementById("txt2");
            // 获取选择的计算符号,+ - * / 
            var symbol = document.getElementById("sel");

            // console.log(num1.value,num2.value,symbol.value);

            var res = getCalc(num1.value,num2.value,symbol.value);

            document.getElementById("txt3").value = res;
        }
        // 计算函数
        function getCalc( num1 , num2 , sym ){
            // 传递过来的值是 String 类型的,要转换成 Number
            num1 = Number(num1);
            num2 = Number(num2);
            // 结果值 res
            var res = 0;
            // 判断输入进来的符号是什么,进行下面的操作
            switch( sym ){
                case "+" :
                    res = num1 + num2;
                    break;
                case "-" :
                    res = num1 - num2;
                    break;
                case "*" :
                    res = num1 * num2;
                    break;
                case "/" :
                    res = num1 / num2;
                    break;    
            }
            // 测试:输出的结果正确
            // console.log(res);
            // 在一个函数之中,return的优先级是最高的,如果在switch中,return之后就不需要break 
            // 返回结果值
            return res;
        }
    </script>

效果截图:
效果截图

2、编写函数,输入半径参数,求圆的面积,并返回

<script>

        // 圆的半径 radius
        var radius = prompt("请输入圆的半径");
        // 将 String 转为 Number
        radius = Number(radius);
        // 求圆的面积 调用函数getArea
        var area = getArea( radius );
        // 打印面积area
        document.write("圆的面积为:" + area);

        // 获取圆的面积函数 getArea
        function getArea(radius){     
            // 面积Area
            var Area = Math.PI * Math.pow( radius , 2);
            // 将得到的结果小数点保留两位
            Area *= 100 ; 
            Area = parseInt(Area); 
            Area /= 100;
            // 返回结果
            return Area;
        }
    </script>

效果截图:
效果截图
效果截图

3、编写一个函数,计算三个数字的大小,按从小到大的顺序打印

<p>请输入三个数字</p>
    <input type="text" id="txt1">
    <input type="text" id="txt2">
    <input type="text" id="txt3">
    <button id="btn">点击排序</button>
    <script>
        btn.onclick = function () {
            // 通过 btn 来获取到页面中的输入的数据
            // 获取页面中文本框中输入的值
            var num1 = document.getElementById("txt1");
            var num2 = document.getElementById("txt2");
            var num3 = document.getElementById("txt3");
            getSort(num1.value, num2.value, num3.value);
        }
        // 排序函数
        function getSort(num1, num2, num3) {
            if (num1 > num2) {  //num1大
                if (num2 > num3) {  //num2大
                    console.log(num3); console.log(num2); console.log(num1);
                } else{  //num3大
                    console.log(num2); console.log(num3); console.log(num1);
                }
                // 第二个跟第三个比
            } 
            if (num2 > num3) {  //num2大
                if (num1 > num3) {  //num1大
                    console.log(num3); console.log(num1); console.log(num2);
                }else{   //num3大
                    console.log(num1); console.log(num3); console.log(num2);
                }
                // 第一个跟第三个比
            } 
            if (num3 > num1) {  //num3大
                if (num2 > num1) {  //num2大
                    console.log(num1); console.log(num2); console.log(num3);
                } else{   //num1大
                    console.log(num2); console.log(num1); console.log(num3);
                }
            }
        }
    </script>

效果截图:
效果截图
效果截图

4、编写一个函数,在页面上打印一个N1 行M列的表格,表格内容填充0~100的随机数字

<script>
        // 5行 x 3列
        var row = 5;
        var col = 3;
        // 生成表格
        getTab(row , col);

        function getTab(row , col){
            document.write("<table border = 1>");
            // 打印 行
            for( i = 0 ; i < row ; i++){
                document.write("<tr>");
                // 打印 列
                for( k = 0 ; k < col ; k++){
                    document.write("<td>");
                    document.write(parseInt(Math.random() * 100));
                    document.write("</td>");
                }
                document.write("</tr>");
            }
            document.write("</table>");
        }
    </script>

效果截图:
效果截图

5、编写函数,判断一个字符串的内容是不是纯数字,返回true或false

<script>
        // 输入内容
        var str = prompt("请输入一个字符串");
        var res = isNum(str);
        if (res) { // true 是纯数字
            alert(str + "是纯数字");
        } else { // false 不是纯数字
            alert(str + "不是纯数字");
        }
        // 函数判断是不是纯数字
        function isNum(str) {
            // 遇到问题:Number("   ") => 0
            // 如果 强制转换 str 的适合结果为0,那么就要关注这个特殊值
            if (Number(str) === 0) {
                if (str === "0") {
                    return true;
                }
                return false;
            }
            return !isNaN(str)
        }
    </script>

效果截图:
效果截图
效果截图

6、编写一个函数,输入n为偶数时,调用函数求1/2+1/4+…+1/n,当输入n为奇数时,调用函数求1/1+1/3+…+1/n

<script>
        var n = prompt("请输入一个数字");
        // 结果值,存储函数返回的值
        var res;
        // 判断 n 为偶数还是奇数
        if (n % 2 === 0) {
            res = even(n);
        } else {
            res = odd(n);
        }
        // 偶数
        function even(n) {
            // 求和 sum
            var sum = 0;
            // 循环求1/2+1/4+...+1/n
            for (var i = 2; i <= n; i += 2) {
                sum += 1 / i;
            }
            console.log(sum);
        }
        // 奇数
        function odd(n) {
            // 求和 sum
            var sum = 0;
            // 循环求1/2+1/4+...+1/n
            for (var i = 1; i <= n; i += 2) {
                sum += 1 / i;
            }
            console.log(sum);
        }
    </script>

效果截图:
效果截图
效果截图

7、编写函数,生成4位数字的验证码

 <script>
		function validateNum(){
            var randomNum = "";
            // 生成四位 : 
            for(var i = 0 ; i < 4 ; i ++){
                // 获取到一位的随机数字;
                randomNum += parseInt(Math.random() * 10);
            }
            return randomNum;
        }
        var res = validateNum();
        console.log(res);
    </script>

效果截图:
效果截图

8、某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文

 <script>
        // 传入原文text
        var text = prompt("请输入要加密的原文");
        // 加密函数
        encryption(text);
        function encryption(num){
            // 将传入的四位数字分解成num1, num2, num3, num4
            num1 = parseInt( num / 1000 );
            num2 = parseInt( num / 100 ) % 10;
            num3 = parseInt( num / 10 ) % 10;
            num4 = num % 10;
            // console.log(num1 ,num2 ,num3 , num4);

            // 加密算法1:每位数字都加上5
            num1 += 5;
            num2 += 5;
            num3 += 5;
            num4 += 5;
            // console.log(num1 ,num2 ,num3 , num4);

            // 加密算法2:用除以10的余数代替该数字
            num1 %= 10;
            num2 %= 10;
            num3 %= 10;
            num4 %= 10;
            // console.log(num1 ,num2 ,num3 , num4);

            // 加密算法3:将第一位和第四位交换,第二位和第三位交换
            var temp1,temp2;
            temp1 = num1;
            num1 = num4;
            num4 = temp1; 
            temp2 = num2;
            num2 = num3;
            num3 = temp2; 
            document.write("密文:" +  num1 ,num2 ,num3 , num4);
        }
    </script>

效果截图:
效果截图
效果截图

9、在页面输入任意数字,点击按钮后计算该数字的阶乘

	<input type="text" id="txt" placeholder="请输入任意数字">
    <button id="btn">计算阶乘</button>
    
    <script>
        // 点击按钮之后,获取ipt之中的数据(value),进行阶乘计算并返回结果
        // 获取到输入框的值,输入框元素.value = 固定写法 > 获取输入框中的值
        // btn 点击事件
        btn.onclick = function () {
            var num = document.getElementById("txt").value;
            num = Number(num);
            // 阶乘函数 factorial
            factorial(num);
        }

        function factorial(n) {
                // 阶乘 jc
                var jc = 1;
                for(var j = n ; j > 0 ; j --){
                    jc *= j;
                }
            console.log(jc);
        }
    </script>

效果截图:
效果截图
效果截图

10、编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数。比如:计算0~3之间能组成的奇数是: 01、03、13、21、23、31

<script>
            foo( 0 , 3 );
            function foo(m , n){
                // 组成结果
                var res = "";
                // 计数器
                var count = 0;
                // 判断输入的数字大小,让小的在前面
                if( m > n){
                    // 中间量,两个值进行交换
                    var temp = "";
                    temp = m;
                    m = n;
                    n = temp;
                    // 经过数值的交换,可以达到 m < n ,小的数值在前面
                }
                // 循环组成奇数
                // 循环从 m 开始,到 n 结束
                // i 的值从 m ~ n
                for(var i = m ; i <= n ; i ++){
                    // j 的值从 m ~ n
                    for(var j = m ; j <= n ; j ++){
                        // 判断是不是奇数,两个数字不能重复
                        if( i !== j && parseInt(i + "" + j) % 2 !== 0){
                            count ++;
                            res = i + "" + j;
                            console.log(res);
                        }
                    }
                }
                console.log("能组成的奇数个数为:" + count + "个");
            }
        </script>

效果截图:
效果截图


如果有其他思路欢迎评论区讨论,文章之中若有失误之处欢迎指正。

原创文章 14 获赞 19 访问量 1302

猜你喜欢

转载自blog.csdn.net/XH_jing/article/details/104735815