课程首页 › 第5部分 › 第76课

第76课 移位加密

第5部分 功能的复用 · 函数· 知识点:函数应用

移位加密(函数应用)

加密容易解密难,有时候稍微将输入的字符按照一定的规则移动一下位置,就很难理解了。

你知道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