鱼C论坛

 找回密码
 立即注册
查看: 686|回复: 3

[已解决]求大神看看

[复制链接]
发表于 2020-5-19 21:56:41 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>
main()
{
        int ch;
        printf("请输入");
        while ((ch=getchar())!='\n')
        {
                if(ch>='a'&&ch<='z')
                {
                        ch=ch+3;
                }
               
                if(ch>='A',ch<='Z')
                {
                        ch=ch+3;
                }
        }
       
        putchar('\n');
}这是我写的
  putchar('a' + (ch - 'a' + 3) % 26);这是答案中if里面的
                        continue;
能不能讲下我错在哪里和答案这个是什么意思
最佳答案
2020-5-19 23:59:21
本帖最后由 sunrise085 于 2020-5-20 00:01 编辑

你一楼写的有点乱,没看太明白。
程序的逻辑问题是,没考虑xyz和XYZ自加3之后超出字母范围,将之改为abc和ABC的情况。
putchar('a' + (ch - 'a' + 3) % 26);这个就考虑到了把最后的三个字符改为最前面三个字符的情况。
假设输入字符是ch= ‘’‘’x ,'a' + (ch - 'a' + 3) % 26得到的就是'a';若输入的是ch='h','a' + (ch - 'a' + 3) % 26得到的就是'k'
#include <stdio.h>
int main()
{
    int ch;
    printf("请输入:");
    while ((ch=getchar())!='\n')
    {
        if(ch>='a' && ch<='z')
        {
            ch='a' + (ch - 'a' + 3) % 26;
        }
        
        if(ch>='A'&& ch<='Z')
        {
                ch='A' + (ch - 'A' + 3) % 26;
        }
        putchar(ch);
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-5-19 21:58:24 | 显示全部楼层
要求:用户输入一行明文(字符串),针对字母进行加密(偏移量设置为 3),非字母部分保留原型注意:字母 y 应该被替换为字母 b,而字母 z 应该被替换为字母 c。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-19 23:59:21 | 显示全部楼层    本楼为最佳答案   
本帖最后由 sunrise085 于 2020-5-20 00:01 编辑

你一楼写的有点乱,没看太明白。
程序的逻辑问题是,没考虑xyz和XYZ自加3之后超出字母范围,将之改为abc和ABC的情况。
putchar('a' + (ch - 'a' + 3) % 26);这个就考虑到了把最后的三个字符改为最前面三个字符的情况。
假设输入字符是ch= ‘’‘’x ,'a' + (ch - 'a' + 3) % 26得到的就是'a';若输入的是ch='h','a' + (ch - 'a' + 3) % 26得到的就是'k'
#include <stdio.h>
int main()
{
    int ch;
    printf("请输入:");
    while ((ch=getchar())!='\n')
    {
        if(ch>='a' && ch<='z')
        {
            ch='a' + (ch - 'a' + 3) % 26;
        }
        
        if(ch>='A'&& ch<='Z')
        {
                ch='A' + (ch - 'A' + 3) % 26;
        }
        putchar(ch);
    }
    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-20 00:01:42 | 显示全部楼层
本帖最后由 Cute_Traver_Cat 于 2020-5-20 00:04 编辑

应该是错在最后三个字母的问题,小写字母转换后会成为大写x->A,y->B,z->C
ascii转换如下
应该是错在最后三个字母的问题,小写字母转换后会成为大写x->A,y->B,z->C,
<a=97,z=122>
<举例r=114,x=120>
>>> 38 % 26
12
>>> 114 - 97
17
>>> 17+3
20
>>> 20%26
20
>>> +97
97
>>> 20+97
117
>>> 120 -97
23
>>> 23 +3
26
>>> 26%26
0
>>> 0+97
97
>>> 
[/code]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 17:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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