哪位大佬解答一下这个问题

本题要求编写程序,将英文字母替换加密。为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。变换规则是:将明文中的所有英文字母替换为字母表中的后一个字母,同时将小写字母转换为大写字母,大写字母转换为小写字母。例如,字母a->B、b->C、…、z->A、A->b、B->c、…、Z->a。输入一行字符,将其中的英文字母按照以上规则转换后输出,其他字符按原样输出

#include<stdio.h>
int main ()
{
    int i=0;
    char str[5000];
    gets(str);
    while(str[i]!='\0')
    {
        if(('a'<=str[i]&&str[i]<='z')||('A'<=str[i]&&str[i]<='Z'))
        { if('a'<=str[i]&&str[i]<='y')
            {
                str[i]-=31;
                printf("%c",str[i]);

            }
          else  if('A'<=str[i]&&str[i]<='Y')
            {
               str[i]+=33;
                printf("%c",str[i]);

            }
        
            if(str[i]=='Z')
            printf("a");
            if(str[i]=='z')
            printf("A");}
              else
            printf("%c",str[i]);
        i++;
    }
    printf("\n");
    return 0;
}

为甚麽不行

if ('a' <= str[i] && str[i] <= 'y') {
    str[i] -= 32;
    printf("%c", str[i]);

} else if ('A' <= str[i] && str[i] <= 'Y') {
    str[i] += 32;
    printf("%c", str[i]);

}

应该都是 32 ,可查 ascii 表

来个大佬吧

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y

C和C++完整教程:https://blog.csdn.net/it_xiangqiang/category_10581430.html
C和C++算法完整教程:https://blog.csdn.net/it_xiangqiang/category_10768339.html