18326638710 发表于 2013-11-20 17:28:02

小甲鱼视频作业,密文。

本帖最后由 18326638710 于 2013-11-20 22:17 编辑

这个作业 ,我只写了把原文改成密文,,,但把密文改成原文, 我就不会了。是在一个代码源文件里写的。还要要求输入密码后再把密文改成原文。。。求解。。。。。附上我写把原文改成 #include <stdio.h> /*密文*/

void main()
{
char a; int n;
for (n=0; n<=100; ++n)
{
scanf("%c",&a);
if ( a <= 90 && a >= 65 )
{
if( a >= 57 )
{
printf("%c", a-22);
}
else {
printf("%c", a+4);
}
}
else if ( a >= 97 && a <= 122)
{
if ( a >= 119 )
{
printf("%c", a - 22 );
}else {
printf ("%c", a+4);
}
}
if( a!='\n' )
{
printf("input error!");
}
}
}
密文的代码。。

18326638710 发表于 2013-11-20 17:28:49

只写一个代码,不要写两个代码。

18326638710 发表于 2013-11-21 12:01:28

求解啊。。。。大神。。。。。

默默路过 发表于 2013-11-22 00:05:16

代码中11行 楼主笔误了吧,应该是if(a>=87)

解密代码将源代码复制 逆推就可以了,比如你加密方式是后移4位位移,那么解密就是前移4的位移!

以大写字母为例就是
   if ( a <= 90 && a >= 65 )
                {
                        if( a <= 68)
                        {
                                printf("%c", a+22);
                        }
                        else {
                                        printf("%c", a-4);
                                }
                }
改三处就oK;
小写字母的 逆运算同上。

另外,lz的最后一句错误测试,应该是想输入中含有非字母的就报错,但是 位子不太对,放到你的位子,会出现很多错误信息,应该使用goto 命令完成结束跳转更好!   
代码如下:
        else if( a!='\n' ) goto error;
        }
error: printf("input error!");
}             最后的if 改为else if错误就直接结束程序的输出,不知道我想的是否是你想的效果!
先就到这吧,希望对楼主有所帮助! 还有提醒楼主一点就是,写程序的时候尽量 具有可读性,不要全部从第一位开始,如果是因为黏贴的问题,请自动忽略!!! {:1_1:}

_Alive 发表于 2013-11-22 19:22:41

不懂啊   再研究研究家

18326638710 发表于 2013-11-23 00:39:39

默默路过 发表于 2013-11-22 00:05 static/image/common/back.gif
代码中11行 楼主笔误了吧,应该是if(a>=87)

解密代码将源代码复制 逆推就可以了,比如你加密方式 ...

关键要有一个触发点,还要输入密码后再解密。。

默默路过 发表于 2013-11-23 07:20:16

18326638710 发表于 2013-11-23 00:39 static/image/common/back.gif
关键要有一个触发点,还要输入密码后再解密。。

方法一是直接读取文件 解密,一种就是 直接输入解密!如果要读取前面还要加入文件创建和保存输出!这个 我不会! 直接输入的话,和你写的代码一样!
页: [1]
查看完整版本: 小甲鱼视频作业,密文。