猴子吃桃问题c语言_c语言 加密问题 求优化
将字母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来表示数组长度!
希望我的回答对你有帮助!
其他回答
暂无其它回答!