鱼C论坛

 找回密码
 立即注册
查看: 1571|回复: 6

C语言输入的每个字母减3

[复制链接]
发表于 2016-9-9 22:43:55 | 显示全部楼层 |阅读模式

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

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

x
今天看了小甲鱼老师留的作业,做一个凯撒密码,把输入的字母每个加上3再输出,我想如果每个都减3又改怎么写呢?求教


下面代码是每个都加3的
#include <stdio.h>

int main()
{
        int ch;

        printf("请输入明文:");

        while ((ch = getchar()) != '\n')
        {
                if (ch >= 'a' && ch <= 'z')
                {
                        putchar('a' + (ch - 'a' + 3) % 26);
                        continue;
                }

                if (ch >= 'A' && ch <= 'Z')
                {
                        putchar('A' + (ch - 'A' + 3) % 26);
                        continue;
                }

                putchar(ch);
        }

        putchar('\n');

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-9-10 08:46:11 | 显示全部楼层
本帖最后由 mingcxx 于 2016-9-10 08:47 编辑

改了2句,代码如下:
#include <stdio.h>

int main(void)
{
        int ch;

        printf("请输入明文:");

        while ((ch = getchar()) != '\n')
        {
                if (ch >= 'a' && ch <= 'z')
                {
                          putchar('z' + (ch - 'z' - 3) % 26);
                        //putchar('a' + (ch - 'a' + 3) % 26);
                        continue;
                }

                if (ch >= 'A' && ch <= 'Z')
                {
                          putchar('Z' + (ch - 'Z' - 3) % 26);
                        //putchar('A' + (ch - 'A' + 3) % 26);
                        continue;
                }

                putchar(ch);
        }

        putchar('\n');

        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2016-9-10 08:49:12 | 显示全部楼层
应该是
改:putchar('a' + (ch - 'a' + 23) % 26);

改:putchar('A' + (ch - 'A' + 23) % 26);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-10 08:50:33 | 显示全部楼层
mingcxx 发表于 2016-9-10 08:46
改了2句,代码如下:

好聪明,是怎么想出来的,真棒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-10 08:51:09 | 显示全部楼层
5tao 发表于 2016-9-10 08:49
应该是
改:putchar('a' + (ch - 'a' + 23) % 26);

是的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-9-10 09:09:25 | 显示全部楼层
本帖最后由 mingcxx 于 2016-9-10 09:25 编辑
飞飞123 发表于 2016-9-10 08:50
好聪明,是怎么想出来的,真棒


慢慢学呗。就是起点+偏移。以大写字符为例。向后+3的代码,就是起点字符'A'+偏移量(ch - 'A' + 3)%26就是'A'后偏移3个字符的新字符了。
模仿向后+3的,向前-3的类似,起点'Z'+偏移量(ch - 'Z' - 3)%26(负值)得到ch的新字符。
PS:“X%26”使得X是0到25之间(或0到-25)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-9-10 16:11:13 | 显示全部楼层
mingcxx 发表于 2016-9-10 09:09
慢慢学呗。就是起点+偏移。以大写字符为例。向后+3的代码,就是起点字符'A'+偏移量(ch - 'A' + 3)%26 ...

感谢&#128522;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-27 11:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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