某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换,请编写一个函数,传入原文,输出密文
先将四位数分解,再根据加密规则运算,最后加到函数中输出
function getCipher(n){
let g = n % 10;
g = (g + 5) % 10
let s = parseInt(n / 10) % 10;
s = (s + 5) % 10
let b = parseInt(n / 100) % 10;
b = (b + 5) % 10
let q = parseInt(n / 1000)
q = (q + 5) % 10
let temp = q;
q = g;
g = temp;
temp = b;
b = s;
s = temp;
let num = q * 1000 + b * 100 + s * 10 + g * 1
return num
}
let n = +prompt(`请输入原文:`)
console.log(`密文=`,getCipher(n))
之后再将上述内容优化,将加密规则改写为循环,加加到函数中
function getCipher(n) {
let str = '';
let dig = 0;
for (let i = 0; i < 4; i++) {
dig = parseInt(n / 10 ** i) % 10
dig = (dig + 5) % 10
str += dig + ' '
}
return str
}
var n = +prompt(`请输入原文:`)
console.log(`密文=`, getCipher(n))
但电话号码的数据类型一般是字符串类型
所以可以根据
字符串是以数组的形式存放的:在访问字符串中某个字符时可以通过"数组名[下标]"的方式来访问
来进行改写
function getCipher(pwd) {
let str = '';
for (let i = 0; i < 4; i++) {
let dig = pwd[i]
let newdig = (dig*1 + 5) % 10
str += newdig
}
return `${str[3]}${str[2]}${str[1]}${str[0]}`
}
var n = getCipher('1234')
console.log(`密文=`, n)