小甲鱼视频作业,密文。
本帖最后由 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!");
}
}
}
密文的代码。。 只写一个代码,不要写两个代码。 求解啊。。。。大神。。。。。 代码中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:}
不懂啊 再研究研究家 默默路过 发表于 2013-11-22 00:05 static/image/common/back.gif
代码中11行 楼主笔误了吧,应该是if(a>=87)
解密代码将源代码复制 逆推就可以了,比如你加密方式 ...
关键要有一个触发点,还要输入密码后再解密。。 18326638710 发表于 2013-11-23 00:39 static/image/common/back.gif
关键要有一个触发点,还要输入密码后再解密。。
方法一是直接读取文件 解密,一种就是 直接输入解密!如果要读取前面还要加入文件创建和保存输出!这个 我不会! 直接输入的话,和你写的代码一样!
页:
[1]