凯撒密码但加密结果不对

找着网上的代码抄的,除了名称不一样其他基本都一样,但就是我的代码跑起来有问题,还看不出来,有人能解答一下吗?

img

#include 



int main() {
    char a[100];
    int n = 3;
    void forge(char b[]);
    printf("明文:");

    gets(a);
    forge(a);
    printf("密文:%s\n", a);
}

void forge(char b[]) {
    int i;
    for (i = 0; b[i] != '\0'; i++) {
        if (b[i] >= 'a' && b[i] <= 'z') {
            b[i] += 3;
            
            if (b[i] > 'z')
                b[i] -= 26;
        } else if (b[i] >= 'A' && b[i] <= 'Z')
            b[i] += 3;
        
        if (b[i] > 'Z')
            b[i] -= 26;

    }

}

else if部分没有加大括号啊

#include <stdio.h>
 
 
 
int main() {
    char a[100];
    int n = 3;
    void forge(char b[]);
    printf("明文:");
 
    gets(a);
    forge(a);
    printf("密文:%s\n", a);
}
 
void forge(char b[]) {
    int i;
    for (i = 0; b[i] != '\0'; i++) {
        if (b[i] >= 'a' && b[i] <= 'z') 
        {
            b[i] += 3;
            if (b[i] > 'z')
                b[i] -= 26;
        } 
        else if (b[i] >= 'A' && b[i] <= 'Z')
         {
            b[i] += 3;
            if (b[i] > 'Z')
                 b[i] -= 26;
       }
    }
 
}
 

如果是嵌套循环的话 else if后面要加大括号 要不然会出问题

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^