马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
我刚刚学习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'; )
|