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