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

方法一

思路:首先求出个、十、百、千位上分别对应的数字,然后对其进行相关运算之后在将值赋值给它自身。最后根据题目要求交换位置进行字符串的拼接即可。

function mw(num) {
    var g = parseInt(num / 1) % 10;
    var s = parseInt(num / 10) % 10;
    var b = parseInt(num / 100) % 10;
    var q = parseInt(num / 1000) % 10;
    g = (g + 5) % 10;
    s = (s + 5) % 10;
    b = (b + 5) % 10;
    q = (q + 5) % 10;
    return '' + g + s + b + q;
}
var result = mw(1234)
console.log(result);

 方法二

思路:此方法是上一方法的简化版,首先定义一个空的字符串,利用for循环遍历,由上可知num除的数字10的0、1、2、3次方,故i的取值为0-3,每循环一次都会取出一个数字,从个位开始选取,刚好个位的字符在空字符串的第一个位置,也即相当于交换了个位于千位的数字。(其他位类似)

 function test2(num) {
     var arr = "";
     for (var i = 0; i <= 3; i++) {
         var temp = 10 ** i;
         var res = parseInt(num / temp) % 10;
         //   console.log(res);
         res += 5;
         res %= 10;
         // console.log(res);
         arr += res;
     }
     console.log(arr);
     return arr;
 }
 test2(1234);

举栗子扩展:若输入的是以字符串形式输入的数字呢

思路:首先同上定义一个空的字符串,使用arguments[i]取出每一个下标对应的元素。进行相关运算之后,然后定义两个临时变量来进行元素的交换。

function pss() {
    var str1 = "";
    var num1 = (arguments[0] + 5) % 10;
    var num2 = (arguments[1] + 5) % 10;
    var num3 = (arguments[2] + 5) % 10;
    var num4 = (arguments[3] + 5) % 10;
    str1 = str1 + num1 + num2 + num3 + num4;
    console.log(str1);
    var str2 = "";
    var temp1;
    temp1 = num1;
    num1 = num4;
    num4 = temp1;
    var temp2;
    temp2 = num2;
    num2 = num3;
    num3 = temp2;
    str2 = str2 + num1 + num2 + num3 + num4;
    console.log(str2);
}
pss(1, 2, 3, 4);

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值