字母移位加解密
我刚刚学习C语言,有个例题是这样的,字母+4移位,比如a变成e,b变成f,后面w~a,x~b数字和别的照样输出
但是加密和解密分别写好后,我又想试着把2个弄在一起,结果运行失败了。
我这样的思路能实现吗?怎么实现
目前进度只到了数组,后面的我还没学习……
#include <stdio.h>
int main ()
{
int n;
char c;
printf ("请选择运行步骤:\n");
printf ("1:开始为以下字符串加密:");
printf ("2:开始为以下字符串解密:");
scanf("%d",&n);
while (n!=1&&n!=2) //输入非1,非2的,按加密处理
{n=1;}
switch (n)
{
case 1:
{
for (;(c=getchar()!='\n');)
{
if ((c>='a'&& c<='z')||(c>='A'&& c<='Z'))
{
c=c+4;
if ((c>='Z'&&c<='Z'+4)||c>='z') //c>='z'!!!这个居然弄反了…………
c=c-26;
}
printf("%c",c); //这个是逐步输出字母变换后的字
}
} break;
case 2:
{
for (;(c=getchar()!='\n');)
{
if ((c>='a'&& c<='z')||(c>='A'&& c<='Z')) //2个与没有分别()造成错误
{
c=c-4;
if (c<'A'||((c>='a'-4)&&c<'a')) //解密时的条件应该是这个
c=c+26;
}
printf("%c",c); //这个是逐步输出字母变换后的字符
}
} break;
}
} 可以的,不过16行和30行,有错误,少了括号.
改为
for ( ; (c=getchar()) != '\n'; ) 谢谢!
前段时间遇到点事情,都没时间过来这看,不好意思了
页:
[1]