鱼C论坛

 找回密码
 立即注册
查看: 1747|回复: 2

[已解决]字母移位加解密

[复制链接]
发表于 2017-4-21 15:24:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我刚刚学习C语言,有个例题是这样的,字母+4移位,比如a变成e,b变成f,  后面w~a,x~b
数字和别的照样输出
但是加密和解密分别写好后,我又想试着把2个弄在一起,结果运行失败了。
我这样的思路能实现吗?怎么实现
目前进度只到了数组,后面的我还没学习……
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. int n;
  5. char c;
  6. printf ("请选择运行步骤:\n");
  7. printf ("1:开始为以下字符串加密:");
  8. printf ("2:开始为以下字符串解密:");
  9. scanf  ("%d",&n);
  10. while (n!=1&&n!=2)   //输入非1,非2的,按加密处理
  11. {n=1;}
  12. switch (n)
  13. {
  14. case 1:
  15. {
  16. for (;(c=getchar()!='\n');)
  17. {
  18. if ((c>='a'&& c<='z')||(c>='A'&& c<='Z'))  
  19. {
  20.    c=c+4;
  21.    if ((c>='Z'&&c<='Z'+4)||c>='z')   //c>='z'!!!这个居然弄反了…………
  22.            c=c-26;
  23. }
  24. printf("%c",c);    //这个是逐步输出字母变换后的字
  25. }
  26. } break;

  27. case 2:
  28. {
  29. for (;(c=getchar()!='\n');)
  30. {
  31. if ((c>='a'&& c<='z')||(c>='A'&& c<='Z'))   //2个与没有分别()造成错误
  32. {
  33.    c=c-4;
  34.    if (c<'A'||((c>='a'-4)&&c<'a'))   //解密时的条件应该是这个
  35.            c=c+26;
  36. }
  37. printf("%c",c);    //这个是逐步输出字母变换后的字符
  38. }
  39. } break;

  40. }

  41. }
复制代码
最佳答案
2017-4-21 16:32:57
可以的,不过16行和30行,有错误,少了括号.
改为
  1. for ( ; (c=getchar()) != '\n'; )
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-4-21 16:32:57 | 显示全部楼层    本楼为最佳答案   
可以的,不过16行和30行,有错误,少了括号.
改为
  1. for ( ; (c=getchar()) != '\n'; )
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-5-26 14:04:42 | 显示全部楼层
谢谢!
前段时间遇到点事情,都没时间过来这看,不好意思了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-26 19:32

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表