鱼C论坛

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

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

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

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

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

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;

}

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 10:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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