猴子吃桃问题c语言_c语言 加密问题 求优化

原问题:c语言 加密问题 求优化
分类:编程开发 > 最后更新时间:【2016-12-24 14:09:54】
问题补充:

将字母a->f,b->g,所有字母均后移5个字母,如,z->e,给出一行小写字母,请将加密后的密文输出。其他字符不改变。 限时1s

#include<stdio.h>

int main()

{

char t;

while(t!='\n'||t!='\r')

{

scanf("%c",&t);

if (t<'a' || t>'z')

printf("%c",t);

else

printf("%c", 'a'+(t-'a'+5) % 26 );

}

return 0;

}

最佳答案

楼主你好!
你应该是想通过异或进行简单的加密吧!
# include<stdio.h>
# include<string.h>
# include<stdlib.h>
int main(void)
{
char key;
char str[10];
int i;
printf("请输入密钥:");
scanf("%c",&key);
fflush(stdin);
printf("请输入要加密的文字:\n");
scanf("%s",str);
int len=strlen(str);
for(i=0;i<len;i++)
{
str[i]=str[i]^key;
}
printf("密文:\n");
printf("%s\n",str);
printf("解密:\n");
for(i=0;i<len;i++)
{
str[i]=str[i]^key;
}
printf("%s\n",str);
system("pause");
}
以上代码已经改正!可以运行!
总的说!你的代码有两个问题!
第一,下面这段是不是多余了啊?
for(i=0;i<strlen(str);i++)
{
str[i]=str[i]^key;
}
第二,就是for()里面就不应该用strlen(str),假如你密钥是a,加密的密文是abc,是不是导致第一轮循环就使得str[0]=0;再判断i<strlen(str)就会导致循环不退出!
所以要单独使用一个变量len来表示数组长度!
希望我的回答对你有帮助!

最佳答案由网友    提供
公告: 为响应国家净网行动,部分内容已经删除,感谢网友理解。
16

分享到:

其他回答

暂无其它回答!