JS中用函数封装的一些试题(包含循环问题)

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

  • 思路:首先定义一个函数,声明式和赋值式都行,然后给3个形参,分别用来接收num1、num2、加减乘除的标识、然后用switch来进行判断,当b为1的时候表示2数相加,当b为2的时候表示2数相减,当b为3的时候表示2数相乘,当b为4的时候表示2数相除
function a(num1,num2,b){
     switch (b){
        case 1:
       		return num1+num2;
            break;
       case 2:
        	return num1-num2;
       		break;
       case 3:
        	return num1*num2;
        	break;
        case 4:
        	return num1/num2;
       		break;
       }
}
 alert(a(1,2,1))

二、 编写一个函数,计算三个数字的大小,按从小到大顺序输出

1. 方法一(基础)

  • 思路:我们先假设第一个数是最小的,定义min用来存放下标为0的最小值,然后用for循环一一比较,如果有数比这个数小,就将更小的数赋值给min,然后定义一个max用来存放最大值,也是通过循环一一比较,将最大的值赋值给max,最后剩下的那个数就是中间的数
function mySort() {
    var min = arguments[0];
    var max = arguments[0];
     var mid = arguments[0];
     for (var i = 0; i < arguments.length; i++) {
          if (arguments[i] < min) {
               min = arguments[i]
           }else if(arguments[i] > max){
               max = arguments[i];
           }else if(arguments[i] != min && arguments[i] != max){
              mid = arguments[i];
           }
     }
       console.log(min,mid,max);
}
 mySort(1,4,2);

2. 方法二(冒泡排序)

  • 后面我会用一篇文章来讲冒泡排序和选择排序
var numSort = function () {
    var arr = arguments;
    for (var j = 0; j < arr.length - 1; j++) {
        for (var i = 0; i < arr.length - 1 - j; i++) {
            if (arr[i] > arr[i + 1]) {
                var temp = arr[i];
                arr[i] = arr[i + 1];
                arr[i + 1] = temp
            }
        }
    }
    return arr
}
console.log(numSort(1, 6, 4, 5, 123, 213, 3, 8, 9, 4, 5));

三、编写一个函数求一个数字是否是质数

  • 思路:质数是只能被自己和1约,首先定义一个flag,初始值为true,用for,初始值为2,因为不需要1,然后用该数依次除以2到自己本身-1的数,如果有一个,flag变为false,则表示这个数不是质数。
var prime = function (num) {
    var flag = true
    for (i = 2; i < num; i++) {
        if (num % i == 0) {
            flag = false
        }
    }
    if (flag == false) {
        console.log("这个数不是质数");
    }
}
prime(9)

四、 编写一个函数,计算任意两个数字之间所能组成的奇数个数,数字必须是个位数

  • 比如: 计算0-3之间能组成的奇数个是01、03、11、13、21、23、31、33
var o=function(num1,num2){
        for(var i=0;i<=num1;i++){
            let num;
            for(var j=0;j<=num2;j++){
                num=i*10+j;
                if(j%2!=0){
                    console.log(num);
                }
            }
        }
}
o(1,3)

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

function pa(a) {
    var a1 = parseInt(a / 1000); //千
    var a2 = parseInt(a / 100) % 10; //百
    var a3 = parseInt(a / 10) % 10; //十
    var a4 = a % 10; //十

    a1 = (a1 + 5) % 10
    a2 = (a2 + 5) % 10
    a3 = (a3 + 5) % 10
    a4 = (a4 + 5) % 10

    var a5
    a5 = a4
    a4 = a1
    a1 = a5

    a5 = a2
    a2 = a3
    a3 = a5

    var num;
    num = a1 * 1000 + a2 * 100 + a3 * 10 + a4
    console.log(num);
}
pa(1234)

猜你喜欢

转载自blog.csdn.net/liu0218/article/details/126532328
今日推荐