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>

效果截圖:
效果截圖


如果有其他思路歡迎評論區討論,文章之中若有失誤之處歡迎指正。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章