4.3.4 字符串应用举例
例4-6 地下工作者A与上级B之间常使用电报联系,为了保密,A发给B的电文需首先翻译成英文,再将英文按一定规律加密,然后将加密后的电文通过电报局发给B,B接到电文后,需先解密,再翻译,才能读出A给B的信息。假设A和B之间约定的英文加密规律为:
首先,为所有的字母规定了一个顺序,a,b,c,d,…,z,A,B,C,…,Z,依次编号为1,2,3,…,52,
A要发出的英文按如下方式加密,将任何一个字母转为序号为这个字母的3倍的字母,如果序号的3倍超过了52,则进行取余运算,以使值落在52内,以对应相应的字母。
例如:字母a的序号为1,转换为c,字母b的序号为2,转换为f,字母A的序号为27,转换为序号为27*3%52=29的字母,即字母C,以此类推,字母Z的依然转为字母Z。
试编程将从键盘中输入的一串英文转化为相应的密文。
算法分析:
本例首先从键盘输入明文,再依次将明文的各字符按规律转换即可。
要将明文的一个字符ch进行转换,首先需得到明文字符ch的序号,如ch为小写字母,则其序号为ch−'a'+1;如为大写字母,则为ch−'A'+27。当得到密文字符的序号num后,如其值在1到26之间,则相应的字符的ASCII码为num+'a'−1,如果值在27到52之间,则为num−27+'A'。
将明文的字符依次按上面的规律转换便可得到密文,最后需为密文字符串加上结束标志。
参考程序如下:
程序的运行结果如图4.3.6所示。
图4.3.6 字符加密
常见的编程错误4.3
在处理字符串数组时,忘记考虑NULL终止符'\0'。
忘记用NULL字符'\0' 终止一个新建的字符串。
忘记换行字符'\n'是一个输入字符的有效数据。
在使用字符串库函数、字符库函数和转换库函数时,忘记分别包含string.h、ctype.h,和stdlib.h头文件。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。