第76课 移位加密
移位加密(函数应用)
加密容易解密难,有时候稍微将输入的字符按照一定的规则移动一下位置,就很难理解了。
你知道o rubk i这段加密字符串的原字符串是什么吗?
其实呀,这是由i love c每个字母向右移动6位得到的。
a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z i移动6位
i→j→k→l→m→n→o
l移动6位
l→m→n→o→p→q→r
v移动6位
v→w→x→y→z→a→b
超出了就循环到a重新开始。
程序逻辑
我们可以定义一个函数来实现移位加密。
这个函数需要传入一个字符串和一个秘钥(决定字符移动几位),最后返回加密的字符串。
(1)一个字符串返回值,一个字符串参数,一个整数型秘钥参数(表示移动位数)。

(2)循环读取字符串中的每一个字符,逐一处理。
(3)有3种情况:遇到空格,字符移位超过z,字符移位正常。
①遇到空格则直接忽略,跳到循环的下一个轮次。

②字符移位超过z,将剩余位数移动到a重新开始计算。

③移位正常,即移位后在z范围内。

想一想这3个条件判断的排序是否有讲究?

移位加密

运行程序:
输入:
hello
输出:
nkrru
敲黑板
pass=pass%26:如果移动位数大于字母的数量(26个字母),我们进行求余操作,使得移动位数回到范围内。
巩固练习
(1)阅读以下程序代码,完善程序。
___________ reverseString(string str){
string reversed; for(int i=str.length()- 1; i>=0; i--){
reversed +=str[i];}
return reversed;}
(2)如果函数不返回任何值,其返回类型应该是什么?()
A.int
B.void
C.double
D.char
(3)根据移位加密法编写解密程序,输入加密后的字符串和秘钥,输出解密后的字符串。
样例输入:
o rubk i
样例输出:
i love c
