关于凯撒密码的一些问题
来源:互联网 发布:bbc纪录片 知乎 编辑:程序博客网 时间:2024/05/21 07:10
关于凯撒密码的一些问题,谁能给我解释下这段程序啊? 谢谢了,最好是每句都解释下。
悬赏分:10 - 解决时间:2009-10-22 16:41
#include <stdio.h>
main()
{
char M[100];
char C[100];
int K = 3, i;
printf("请输入明文M(注意不要输入空白串)\n");
gets(M);
for(i = 0; M[i] != '\0'; i++)
C[i] = (M[i] - 'a' + K) % 26 + 'a';
C[i] = '\0';
printf("结果是:\n%s\n",C);
}
=========================================
最佳答案:
这个程序,允许输入一串小写英文,如:goodbye,然后将它们变成密码:jrrgebh。
变换规律是:按照英文字母表,明文字母向下第三个,就是密码。
执行过程见下面的插图。
插图链接:http://hi.baidu.com/%D7%F6%B6%F8%C2%DB%B5%C0/album/item/20220f02fb654eb9d53f7c57.html
各个语句的说明如下:
char M[100]; //明文、密码的存放空间
char C[100];
int K = 3, i; //K=3, 向下第三个
printf("请输入明文(注意不要输入空白串):\n");//显示提示
gets(M); //输入
for(i = 0; M[i] != '\0'; i++) //逐个字母进行变换
C[i] = (M[i] - 'a' + K) % 26 + 'a'; //加密计算公式
C[i] = '\0'; //密码末尾加上终止符号
printf("结果是:\n%s\n", C); //显示密码
//-------------------------------------------------------------
回答者:做而论道 - 八级 2009-10-18 23:45
提问者对于答案的评价:非常感谢你的回答,谢谢啊
其他回答:楼上真是个细心的人 赞一个 2009-10-19 09:41
原文网址:http://zhidao.baidu.com/question/122000309.html
=========================================
后记:
题目中给出的程序,还是有不足的。
当输入大、小写混合的字符串的时候,加密的结果就是有些混乱的。
改正的程序如下:
#include <stdio.h>
void main()
{
char M[100], C[100], K = 4, i;
printf("请输入明文(注意不要输入空白串):\n");
gets(M);
for(i = 0; M[i] != '\0'; i++)
if (M[i] > 96) C[i] = (M[i] - 'a' + K) % 26 + 'a';
else C[i] = (M[i] - 'A' + K) % 26 + 'A';
C[i] = '\0';
printf("各个字符顺次加4的结果是:\n%s\n",C);
}
上述程序对大写、小写的字母,分别进行了循环移位,这就不会出现大小混合移位的情况了。
当然,本程序仍有不足:当输入数字的时候,密码还是不理想。
呵呵,这个缺陷,看看各位网友是否能够补足。
=========================================
- 关于凯撒密码的一些问题
- poj 1298 史上最难的问题 -- 凯撒密码
- java解决凯撒密码问题
- 扩展的凯撒密码实现
- 凯撒密码的java实现
- 凯撒密码的简单改进
- 凯撒密码,简单的加密
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- 凯撒密码
- C++ —— 数据结构之 顺序栈,链式栈?
- android电话状态的记录
- 将A中的二进制数转换为3位的BCD码,其中百位数存放......
- 把N个二进制数据转换成16进制字符数据
- 计算全班单片机期末成绩的总和及平均分 -单片机编程
- 关于凯撒密码的一些问题
- 进行数据比较 -单片机编程
- 字节合并 -单片机编程
- Writing easily XBlock portable XModules
- 首地址为1000H的连续存放的八个数,与首地址为1010H的间隔存放的八个数进行交换
- 模仿“推敲”的写法,对“捉刀”进行解释
- gson的使用细节
- 80C51串口以方式3进行串行通信
- 23.Examine the structure proposed for the TRANSACTIONS table: