作业帮 > 综合 > 作业

利用C语言怎样实现如下算法?

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/10 08:39:32
利用C语言怎样实现如下算法?
一个文本串可用事先给定的字母映射表进行加密.例如,字母映射表为:
a b c d e f g h i j k l m n o p q r s t u v w y z
n g z q t c o b m u h e l k p d a w x f y i v r s j
则字符串"encrypt"被加密为"tkzwsdf",试写一算法,将输入的文本串进行加密后输出.另写一算法,将输入的已加密的文本串进行解密后输出.
定义 char to[] = "ngzqtcobmuhelkpdawxfyivrsj";
设明文是char *msg所指向的内容,
则扫描msg字符串,将msg[i]变成to[msg[i]-'a']即可(映射)
亦即 msg[i] = to[ msg[i] - 'a' ];
再问: if(isalpha(str[i])) pts[i] = code[(int)str[i] - 'a']; 这句后面的-'a'是什么作用?要是解密算法 这句应该怎么写啊,谢谢!
再答: 减'a'的作用是返回它加密后的字母在code数组中的索引,解密的话在code数组中找到加密字母的索引,然后+‘a'即可。因为字符在C语言中其实是整形的,她对应的整数是它的ASCII码,而字母'a'到’z'的ASCII码是连续的。